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

标签 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>

我想将 Address 的 lazy 设置为 false。

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

最佳答案

您使用 SQL 而不是 HQL 有什么原因吗?如果可能,我会在使用 hibernate 时远离 SQL 语句。

我会在 HQL 中这样实现它:

from Customer c
join fetch c.address

join fetch 让 Customers address 不再懒惰。

关于java - 我可以在运行时更改 create SQL Query 的 Lazy 属性值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866003/

相关文章:

java - .equal() 没有按预期工作

java - 带有 Hibernate 的 PostgreSQL 没有持久化我的实体

java - 使用 JPQL 更新数据库中的一列

Java 单元测试 - 常量字段与 setUp()

java - 如何在 jooq 记录对象中设置当前数据库时间

spring-boot - 如何在 Spring Boot 中使用 @Lazy 延迟加载 RabbitMQ 队列?

module - PrestaShop 中的延迟加载页面?

java - EntityManager 生命周期和持续的客户端-服务器-通信

java - struts 1.3 hibernate jsp mysql

javascript - 延迟加载 : progressive vs on-demand