List<Module> query = Ebean.createQuery(Module.class).fetch("permissions").setDistinct(true)
.where().join("permissions").where().le("product_level", level).query().findList();
Module.class 里有个 List<Permission>, 数据库表示为 permission 表格里foreign key(module_id) 到 module表格。用上述方法相当于:
select distinct t0.id c0, t0.app c1, t0.name c2, t0.display_name c3, t0.description c4, t1.id c5, t1.name c6, t1.display_name c7, t1.description c8, t1.permission_number c9, t1.product_level c10, t1.module_id c11 from module t0 left outer join control_permission t1 on t1.module_id = t0.id where product_level <= 2 order by t0.id
java 会自动把查找到的相同的Module 放进一个list, 每个Module对象里面的permission list 里面满足条件也就是 product_level <=level 的项目拿回来。