我想将懒惰设置为“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(默认情况下)。
答案 0 :(得分:1)
您是否有使用SQL而不是HQL的原因?在可能的情况下使用hibernate时,我会远离SQL语句。
我会在HQL中实现它:
from Customer c
join fetch c.address
join fetch
使客户地址不再懒惰。