以下のような A と C が多対多の関係にあるとする。
A <- B -> C
このとき、A に対して、以下のような条件の「どれか」にマッチするフィルタを作成しようとするとエラーとなる。
「全て」にマッチするフィルタでは問題が発生しない。
C.propA = "x"
C.propA = "y"
C.propA = "z"
実行される Criteria は
- C.propA = "X" のみの場合
CriteriaImpl(com.isenshi.tuigwaa.db.dynamic.test.Tgw_entity_3:this[Subcriteria(tgw_attr_1:tgw_attr_1), Subcriteria(tgw_attr_1:tgw_attr_1_1)][tgw_attr=aaa]) - C.propA ="X" or C.propA="Y" の場合
CriteriaImpl(com.isenshi.tuigwaa.db.dynamic.test.Tgw_entity_3:this[Subcriteria(tgw_attr_1:tgw_attr_1)][(tgw_attr_1.tgw_attr_1.tgw_attr=aaa or tgw_attr_1.tgw_attr_1.tgw_attr=bbb)]) - C.propA="X" and C.propA = "Y" の場合
CriteriaImpl(com.isenshi.tuigwaa.db.dynamic.test.Tgw_entity_3:this[Subcriteria(tgw_attr_1:tgw_attr_1), Subcriteria(tgw_attr_1:tgw_attr_1_1)][tgw_attr=xxx, tgw_attr=xxx])
となっている。Exception は以下。
org.hibernate.QueryException: could not resolve property: tgw_attr_1.tgw_attr of: com.isenshi.tuigwaa.db.dynamic.test.Tgw_entity_2_2
at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
at org.hibernate.persister.entity.AbstractPropertyMapping.toColumns(AbstractPropertyMapping.java:63)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1257)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:433)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:393)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:45)
at org.hibernate.criterion.Junction.toSqlString(Junction.java:58)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:333)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:67)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1514)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at org.seasar.tuigwaa.database.function.criteria.HibernateCriteria.list(HibernateCriteria.java:232)