0

我正在使用 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(); 不会工作,因为它不是唯一的,我应该使用什么?我的字符串应该保持为字符串吗?

4

1 回答 1

0

Ebean 提供了一个findList()返回List.

我认为这应该会给你想要的结果:

public static List<Groups> findByCompanyId(Long id){
    return find.where().eq("company_id", id).findList();
}

我不确定你的value专栏是什么。如果它是组的 ID,您可以将类型更改为Groups. 但这将需要 Ebean 通过其 API 不支持的递归查询,您必须为此编写原始 SQL。如果您想避免这些递归查询,您需要通过 Ebean 获取所有组并在 Java 中过滤它们。

于 2013-05-08T16:32:12.213 回答