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 に答える