HibernateTemplate.findByCriteriaメソッドを使用していくつかのクエリを実行しています。ここで、基準にいくつかのSQL制限を作成したいと思いました。
criteria.add(Restrictions.sqlRestriction("name like '%abc%'")
問題は、ClassBのオブジェクトと関係のある1つのオブジェクトClass Aをフェッチしようとしていて、両方のクラスに「name」(または「id」または...)という名前のフィールドがあるため、休止状態のエンジンが結合を行うことです。列名が繰り返されるテーブル。オブジェクトタイプに基づいて制限を指定するにはどうすればよいですか?
{classA.name}とそのようなバリエーションを試しましたが、「あいまいな列名」の例外が発生します。
例(criteriaはRestrictions.sqlRestriction()の配列です):
final DetachedCriteria criteria = DetachedCriteria.forClass(objectClass);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
for(Criterion criterion : criterions) {
criteria.add(criterion);
}
List<T> results = template.findByCriteria(criteria, firstResult, maxResults);