0

次の構造を持つクラスがあります。

public class Machine {
    private Set<Line> lines;
}

今私がしたいのは、特定の行を含むすべてのマシンを取得できる基準でクエリを作成することです。

Criteria に Restrictions.in() があることに気付きましたが、それはテーブルのフィールドが Collection にあるかどうかをチェックし、逆にしたいのです。

助けてくれてありがとう、乾杯、ステフ

4

2 に答える 2

0

以下の Hibernate ドキュメントが役に立ちます: http://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/querycriteria.html#querycriteria-associations

lines基本的に、Machine クラスの要素を参照する 2 番目の条件を作成する必要があります。すなわち

Criteria machineCriteria = session.createCriteria(Machine.class);
Criteria lineCriteria = machineCriteria.createCriteria("lines");
lineCriteria.add(Restrictions.eq("fieldNameOfLineClass", valueOfFieldNameOfLineClass);
machineCriteria.list();
于 2012-08-06T15:02:52.693 に答える
0

この構文はより意味があり、よりコンパクトだと思います。Line インスタンスの ID を手元に持っていると仮定すると、これで必要なものが得られます。

    // we have a Long lineId
    Criteria crit = session.createCriteria(Machine.class)
        .createAlias("lines", "line")
        .add(Restrictions.eq("line.id", lineId);
于 2012-08-06T22:01:14.997 に答える