hibernate 我可以在运行时更改createSQLQuery的Lazy Protity值吗?

ilmyapht  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(121)

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

我想将LAYLY设置为FALSE作为地址。
我必须这样做,因为这个方法返回一个客户列表(带有地址),当我迭代这个列表并打印它非常慢的时候,lazy被设置为真(缺省情况下)。

jbose2ul

jbose2ul1#

您使用SQL而不是HQL有什么原因吗?在可能的情况下,我会在使用Hibernate时避免使用SQL语句。
我会这样在HQL中实现它:

from Customer c
join fetch c.address

join fetch让客户地址不再偷懒。

相关问题