У меня есть две сущности: «Родитель» и «Дитя»
Дочерний элемент отображается в 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.
Спасибо, Рэнд