休止状態を使用して基準クエリを作成しています。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 をエイリアスに参加させることはできますか? 私はそれをグーグルで検索しましたが、役に立ちませんでした。