Ebean - 哪个用于多个结果?

时间:2013-05-08 16:24:50

标签: java mysql playframework playframework-2.0 ebean

我正在使用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 应该保持字符串吗?

1 个答案:

答案 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过滤它们。