枚举映射和标准

时间:2010-04-23 15:19:52

标签: java hibernate enums criteria detachedcriteria

我有两个实体:“父母”& “子女”

Child映射在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>

和Child的枚举类型映射如下:

代码:

<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来解决这个问题。

谢谢, 兰德

0 个答案:

没有答案