У меня есть спящий режим с пользовательскими типами коллекций.
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
.
Теперь мне нужно выполнить запрос, чтобы получить все объекты Policy, имеющие определенный PolicyStatus в качестве текущего.
Что-то вроде:
Criteria crit = getSession().createCriteria(Policy.class)
.createAlias("statusHistory.current", "status")
.add(Restrictions.or(
Restrictions.eq("status.code", "active"),
Restrictions.eq("status.code", "sleeper")));
Я понимаю, что это не работает, так как "текущий" не является отображением ассоциации. Как я должен решить это? Я прочитал, что вместо этого я должен использовать HQL, но понятия не имею, как и если это вообще возможно.
Любые указатели приветствуются!
Спасибо