2011-10-04 232 views
0

我有一个hibernate与其中的自定义集合类型的映射。定制集合上的休眠查询

的java:

class Policy { 
... 
private HistoryMap<Date, PolicyStatus> statusHistory; 
... 
} 

的hbm.xml:

<map name="statusHistory" inverse="true" table="tbl_policy_in_time" order-by="PolIt_ValidFrom desc" 
        collection-type="be.pensionarchitects.admindb.infrastructure.hibernate.HistoryMapType"> 
       ... 
    </map> 

HistoryMapType是接口HistoryMap的实现,并实现UserCollectionType

该地图的方法getCurrent()返回当前PolicyStatus

现在我需要做一个查询来获取具有特定PolicyStatus作为当前策略对象的所有Policy对象。

喜欢的东西:

Criteria crit = getSession().createCriteria(Policy.class) 
       .createAlias("statusHistory.current", "status") 
       .add(Restrictions.or(
         Restrictions.eq("status.code", "active"), 
         Restrictions.eq("status.code", "sleeper"))); 

我理解,这并不为“当前”的工作是不是关联映射。我该如何解决这个问题?我已经读过,我应该使用HQL,但不知道如何,甚至可能。

任何指针表示赞赏!

感谢

回答