我有两门课:
public class Car {
private Integer id;
private List<CarOrder> carOrders;
}
public class CarOrder {
private Car car;
private Long endDate;
private Long id;
}
和 hibernate 映射
<class entity-name="car" name="test.es.Car" table="CARS" schema="ARK_ES">
<cache usage="read-write"/>
<id name="id" column="ID">
<generator class="sequence">
<param name="sequence">ES_SEQUENCE</param>
</generator>
</id>
<bag name="carOrders" inverse="true" lazy="true">
<cache usage="read-write"/>
<key column="CAR_ID"/>
<one-to-many not-found="ignore" entity-name="carOrder"/>
</bag>
</class>
<class entity-name="carOrder" name="temp.es.CarOrder" table="CAR_ORDERS" schema="ARK_ES">
<cache usage="read-write"/>
<id name="id" column="ID">
<generator class="sequence">
<param name="sequence">ES_ORDER_SEQUENCE</param>
</generator>
</id>
<property name="endDate" column="END_DATE"/>
<many-to-one name="car" entity-name="car">
<column name="CAR_ID"/>
</many-to-one>
</class>
我需要加载 endDate 大于某个值的所有汽车和汽车订单。我还需要缓存汽车订单的查询。我尝试使用 hibernate 过滤器,但它们没有被缓存。是否可以使用 hibernate api 无需自定义查询来实现此目的? 忘了说了,车可以没有订单,但一定有结果。
谢谢。
最佳答案
因此您可以在集合类上使用 @fitler 和 @filterdef 注释。但在 session 中启用过滤器非常重要。请点击此链接了解如何启用过滤器,默认情况下不启用它们。 How to enable hibernate filter for sessionFactory.getCurrentSession()?
关于java - hibernate 缩小延迟加载集合范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18303077/