Перечисление enum и критерии - PullRequest
1 голос
/ 23 апреля 2010

У меня есть две сущности: «Родитель» и «Дитя»

Дочерний элемент отображается в Parent следующим образом:

Код:

 <many-to-one name="child" class="org.demo.Child"
     update="false" insert="false" embed-xml="false" node="chd/@id" >
     <column name="CHILD_ID" precision="10" scale="0"   not-null="true" />
  </many-to-one>

, и у ребенка естьТип перечисления отображается следующим образом:

Код:

<property name="toyType">
     <column name="TOY_TYPE" length="100" />
     <type name="org.demo.type.LabelEnumType">
        <param name="enum">org.demo.ToyType</param>
        <param name="defaultLabel"></param>
     </type>
  </property>

отображается как «Строка» в столбце CHILD.TOY_TYPE

Все работает нормально, но я не могу этого сделать:

Код:

  DetachedCriteria dc = DetachedCriteria.forClass(Parent.class);
  dc.add(Restrictions.and(
           Restrictions.eq("child.id", childId),
           Restrictions.eq("child.toyType", ToyType.CAR)));
  dc.setProjection(Projections.rowCount());
  int count = DataAccessUtils.intResult(getHibernateTemplate().
        findByCriteria(dc));

, потому что я получил:

nested exception is org.hibernate.QueryException: could not resolve property: 
    child.toyType of: org.demo.Parent

, поэтому похоже, что он не может решить:

parent->child->toyType

возможно, потому что ToyType имеетне собственная «сущность», но она встроена.

Есть ли обходной путь для этого?Мне нужно продолжать использовать DetachedCriteria, так как он будет «оформлен» в других местах кода.Поэтому мне интересно, смогу ли я решить эту проблему всегда, используя DetachedCriteria.

Спасибо, Рэнд

...