java - 无法延迟加载 JPA 关系
问题描述
我正在与 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<>();
Property.java 没有映射
客户属性.java
@ManyToOne
private Property property;
@ManyToOne
@JsonIgnoreProperties("customerProperties")
private Customer customer;
我已经尝试显式设置 fetch = FetchType.LAZY 但它不断将完整的 Customer 对象与所有 CustomerProperties List
我想了解为什么 fetch 不起作用
解决方案
如果一个集合是否被延迟加载,调试不是一个好的评估机制。调试器本身可能会触发初始化。
而不是使用调试器使用
org.hibernate.Hibernate.isInitialized(yourCollection)
在加载实体后验证它是否已初始化。
如果此方法返回 false 但您仍然怀疑稍后会初始化集合,您应该在可能的后续调用(其他地方)中搜索错误。
推荐阅读
- facebook - 新域未得到验证。错误 - URL 被阻止:此重定向失败,因为重定向 URI 未列入白名单
- angular - 使用闪屏检测应用程序何时以离子/角度完全加载
- json - 小值的 Elasticsearch 查询范围精度问题
- r - 问题在行动按钮
- node.js - 在 prod 的同一台机器上安装两个 nodeJs 版本是否安全
- javascript - 使用 Cloud Functions 从 Firebase Storage 获取下载网址
- python - 刷新页面时烧瓶网站重复返回值
- opencv - 无法在 cnn 中获取图像通道
- python - 在 python 列表中集成字典
- dart - Dart:如何“等待”Future.wait 的清理?