我可以在运行时更改create SQL Query的Lazy属性值吗?

时间:2013-11-08 18:26:49

标签: java hibernate lazy-loading

我想将懒惰设置为“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>

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

我必须这样做,因为这个方法会返回一个客户列表(带地址),当我迭代这个列表并打印它非常慢时,lazy被设置为true(默认情况下)。

1 个答案:

答案 0 :(得分:1)

您是否有使用SQL而不是HQL的原因?在可能的情况下使用hibernate时,我会远离SQL语句。

我会在HQL中实现它:

from Customer c
join fetch c.address

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