Ignoring the embedded beans issue... the fix is to additionally use !subQuery to include the id in the subquery query.
SqlTreeBuilder line 297 becomes:
} else if (!subQuery && p.isId()) {
Now, my quick test using an ID works:
Query<Product> subQuery = Ebean.createQuery(Product.class)
.select("id").where().idEq(4).query();
List<MinCustomer> list = Ebean.find(MinCustomer.class)
.where().in("id", subQuery).findList();
select
c.id,
c.name, c.notes
from o_customer c
where (
c.id) in (select
p.id from o_product p where
p.id = ? )