我正在使用Play Framework,因此使用Ebean,我需要通过搜索'company_id'来查找'value'列中的信息。但是,将有多个行具有相同的company_id,我需要找到所有这些行并将它们放在一个列表中(不必是列表,但最有意义)。
我的表格如下:
+----+------------+-----------+-----------+
| id | company_id | parent_id | value |
+----+------------+-----------+-----------+
| 1 | 1 | 0 | Group1 |
| 2 | 1 | 1 | SubGroup1 |
+----+------------+-----------+-----------+
我的代码是这样的:
@Entity
public class Groups extends Model {
private static final long serialVersionUID = 1L;
@Id
public long id;
public Long company_id;
public Long parent_id;
public String value;
public static final Finder<Long, Groups> find = new Finder<Long,Groups>(Long.class, Groups.class);
public static Groups findByCompanyId(Long id){
return find.where().eq("company_id", id).findUnique();
}
显然,.findunique();不会工作,因为它不是唯一的,我应该使用什么?我的String 值应该保持字符串吗?
答案 0 :(得分:0)
Ebean提供方法findList()
,返回List
。
我认为这应该会给你想要的结果:
public static List<Groups> findByCompanyId(Long id){
return find.where().eq("company_id", id).findList();
}
我不确定您的value
列是什么。如果它是组的ID,您可以将类型更改为Groups
。但是这需要Ebean不支持的递归查询,你必须为此编写原始SQL。如果你想避免这些递归查询,你需要通过Ebean获取所有组,并用Java过滤它们。