开发者

Hibernate query on custom collection

I have a hibernate mapping with custom collection types in it.

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 is an implementation of interface HistoryMap and implements UserCollectionType.

This map has a method getCurrent() which returns the current PolicyStatus.

Now I need to do a query to get all Policy objects having a specific PolicyStatus as current one.

Something like:

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

I understand this doesn't work as "current" isn't an association mapping. How i should I solve this? I have read that I should use HQL 开发者_如何学Pythoninstead, but have no idea how and if it's even possible.

Any pointers are appreciated!

Thanks


If your HistoryMap implements java.util.Map (and respects the interface's contracts) then you can use Criteria API. If not, I don't think it will work with HQL (and with Criteria API). In that case, using native SQL is your best bet. You can make a native query who's result is marshaleld to a specific Hibernate Bean:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html#d0e13696

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜