在我的项目中,我使用 EclipseLink 作为JPA实现。我有两个实体,Product和ProductDetail:
所以我设计了如下的实体模型:
var table = $('#example').DataTable({
columnDefs: [
{ targets: 0, type: 'empty-on-top' }
]
})
@Table(name="product")
public class Product{
@Id
@GeneratedValue(generator = "PRODUCT_ID")
@UuidGenerator(name = "PRODUCT_ID")
@Column(name = "id", unique=true, nullable=false, length=200)
private String id;
// Some other properties....
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
@PrimaryKeyJoinColumn
private ProductDetail productDetail;
}
但是懒惰的获取从未成功。始终随产品一起获取ProductDetail。我检查了许多文档,但仍然无法弄清楚。有人对此有经验吗?非常感谢!
注意:我使用的是EclipseLink,但没有使用Hibernate。
答案 0 :(得分:3)
要使toOne关系的延迟加载有效,EclipseLink必须将一个代理注入引用中。此过程称为“编织”。
默认情况下未启用此功能,因此您必须查看文档以了解如何为运行时环境启用编织:
https://www.eclipse.org/eclipselink/documentation/2.7/solutions/testingjpa004.htm#CHDEECDB