Uploaded image for project: 'Tuigwaa'
  1. Tuigwaa
  2. TUIGWAA-141

多対多関連のテーブルに対するフィルタで、同一カラムに複数の条件を設定し「どれかに一致する」を指定すると Exception が発生する

XMLWordPrintable

    • Type: Icon: Bug Bug
    • Resolution: Unresolved
    • Priority: Icon: Major Major
    • 1.1-beta1
    • Affects Version/s: 1.0.2, 1.0.1, 1.0
    • Component/s: database
    • None

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

            Assignee:
            nishioka nishioka
            Reporter:
            someda someda
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated: