java - 无法延迟加载 JPA 关系

标签 java database hibernate jpa persistence

我正在与 Jhipster 合作。我无法懒惰地获取客户。

我做了一个像这样的JDL...

 PROPERTY
 id
 ...

 CUSTOMER
 id
 ...

 CUSTOMER_PROPERTY
 id
 customer_id
 property_id
 value

 relationship OneToMany {
    Customer to CustomerProperty                    
 }
 relationship ManyToOne {
    CustomerProperty to Property    
 }

我的域名

客户.java

 @OneToMany(mappedBy = "customer", fetch = FetchType.LAZY)
 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
 private Set<CustomerProperty> customerProperties = new HashSet<>();

属性.java 没有映射

客户属性.java

 @ManyToOne
 private Property property;

 @ManyToOne
 @JsonIgnoreProperties("customerProperties")
 private Customer customer;

我已经尝试过显式设置 fetch = FetchType.LAZY,但它会不断带来完整的 Customer 对象和所有 CustomerProperties 列表

我想了解为什么提取不起作用

最佳答案

调试不是评估集合是否已延迟加载的良好机制。调试器本身可能会触发初始化。

而不是使用调试器使用

org.hibernate.Hibernate.isInitialized(yourCollection) 

验证它是否在您的实体加载后被初始化。

如果此方法返回 false 但您仍然怀疑稍后会初始化集合,则您应该在可能的后续调用(其他地方)中搜索错误。

关于java - 无法延迟加载 JPA 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54736609/

相关文章:

java - 如何在java中创建可检查的 ListView

java - 切换 fragment 时滑动选项卡滞后

php - MYSQL JOIN 和 GROUP/DISTINCT

sql - 合并两个选择语句

java - DAO 方法检索单个条目

java - 是否可以将方法引用与接口(interface)的静态方法一起使用?

java - 哪个联合效率更高: List/HashSet

mysql - 连接 Ruby on Rails 从 Non Rails 数据库读取数据

java - SwarmCache Hibernate 配置

spring - 使用 Hibernate 和 Spring 实现乐观锁