1

休止状態を使用して基準クエリを作成しています。DTO オブジェクトがあり、そのフィールドを使用してクエリを生成する必要があります。次のような選言を作成すると、すべてがうまくいくようです。

Criteria c = s.createCriteria(Item.class);
        c.add(Restrictions.disjunction()
                .add(Restrictions.like("buyer", dto.getUser()))
                .add(Restrictions.like("rndEngineer", dto.getUser()))
                .add(Restrictions.like("logistics", dto.getUser()))
                .add(Restrictions.like("qaEngineer", dto.getUser()))
        );

しかし、クエリにエイリアスを追加してこれを実行できるようにすると、次のようになります。

Criteria c = s.createCriteria(Item.class);
        c.createAlias("wiEngineer", "we");
        c.add(Restrictions.disjunction()
                .add(Restrictions.like("buyer", dto.getUser()))
                .add(Restrictions.like("rndEngineer", dto.getUser()))
                .add(Restrictions.like("logistics", dto.getUser()))
                .add(Restrictions.like("qaEngineer", dto.getUser()))
                .add(Restrictions.like("we.sid", dto.getUser()))
        );

where句は問題ありませんが、結果セットにいくつかの要素がありません。Hibernate インナーが私のアイテムに加わると思います。どうにかして Hibernate をエイリアスに参加させることはできますか? 私はそれをグーグルで検索しましたが、役に立ちませんでした。

4

1 に答える 1

1

救助へのJavadoc :

条件 createAlias(String associationPath, String alias, int joinType) が HibernateException をスローする

指定された結合タイプを使用して関連付けに参加し、結合された関連付けにエイリアスを割り当てます。

joinType は、CriteriaSpecification.INNER_JOIN (デフォルト)、CriteriaSpecification.FULL_JOIN、または CriteriaSpecification.LEFT_JOIN のいずれかであると予想されます。

javadoc と Hibernate のリファレンス ドキュメントが利用できるのに、なぜ Google を使用するのでしょうか。

于 2012-05-02T12:42:53.217 に答える