2

我有 2 节课:

public class Car {
    private Integer id;
    private List<CarOrder> carOrders;
}

public class CarOrder {
    private Car car;
    private Long endDate;
    private Long id;
}

和休眠映射

<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 api 来实现这一点?我忘了说,汽车可以没有订单,但必须有结果。

谢谢。

4

1 回答 1

0

所以你可以在你的集合类上使用@fitler 和@filterdef 注释。但是在会话中启用过滤器非常重要。请点击此链接了解如何启用过滤器,默认情况下不启用它们。 如何为 sessionFactory.getCurrentSession() 启用休眠过滤器?

于 2013-08-19T04:25:58.950 回答