2

我想在运行时将惰性设置为“false”,但只设置为一种方法。我可不可以做?

this.getSession().createSQLQuery("select * from customers....")....

注意:我使用的是 createSQLQuery而不是 createCriteria。

CustomerMapping.xml 这里:

<hibernate-mapping>
<class name="com.example.entities.customers.Customer"
    table="CUSTOMERS">
    <id name="id" type="long">
        <column name="ID" />
        <generator class="sequence">
            <param name="sequence">seq_customers</param>
        </generator>
    </id>       
    <property name="name" type="String">
        <column name="NAME_C" />
    </property>
   <many-to-one name="address"
        class="com.example.entities.Address" fetch="select"
        cascade="all">
        <column name="ADDRESS_ID" />
    </many-to-one>
</class>
</hibernate-mapping>

我想为地址设置惰性为假。

我必须这样做,因为此方法返回一个客户列表(带有地址),并且当我迭代此列表并打印其非常慢的原因时,惰性设置为 true(默认情况下)。

4

1 回答 1

1

您使用 SQL 而不是 HQL 是否有原因?如果可能,我会在使用休眠时远离 SQL 语句。

我会在 HQL 中这样实现它:

from Customer c
join fetch c.address

使join fetch客户地址不再懒惰。

于 2013-11-10T06:07:23.870 回答