[TUIGWAA-141] 多対多関連のテーブルに対するフィルタで、同一カラムに複数の条件を設定し「どれかに一致する」を指定すると Exception が発生する Created: 2006-11-16  Updated: 2006-12-22

Status: Open
Project: Tuigwaa
Component/s: database
Affects Version/s: 1.0.2, 1.0.1, 1.0
Fix Version/s: 1.1-beta1

Type: Bug Priority: Major
Reporter: someda Assignee: nishioka
Resolution: Unresolved Votes: 0
Labels: None


 Description   

以下のような 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)



 Comments   
Comment by someda [ 2006-12-22 ]

現状の仕組みだと1.0.x系での対応が難しい。

1.0 系ではドキュメント or 注意書き等の対応とし、根本対応は 1.1 系とする。

Generated at Wed Apr 24 11:17:16 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.