gpt4 book ai didi

java - JPA - 仅使用 ID 保存对象时发生 TransientPropertyValueException

转载 作者:行者123 更新时间:2023-11-30 03:04:42 24 4
gpt4 key购买 nike

我有一个名为发票的对象,它有一个复杂对象的字段

public class Invoice {
@ManyToOne
@JoinColumn(name = "id_site_to")
private Site siteTo;
}

public class Site {
@Id
@GeneratedValue
@Column(name = "id_site")
private long id;

private String description;
...
}

在我的代码中,我从 DTO 创建了发票。如此创建的发票包含一个未填充所有字段但仅填充 ID 的站点。当我尝试保存此发票实例(使用 JPA 存储库)时,我得到

org.hibernate.TransientPropertyValueException:非空属性引用 transient 值

即使站点 ID 存在于数据库中。有没有一种方法可以执行此保存,而不必先通过选择从数据库中获取站点?

最佳答案

如果您使用EntityManager,您可以尝试调用getReference(),引用What is the difference between EntityManager.find() and EntityManger.getReference()?了解详情。

通过 Hibernate 的 Session,您也可以使用 load()

所有这些方法都返回代理,而无需访问数据库。

一条笔记

对于 Hibernate 的 Session,我仅使用您通过对象与 id 设置关联的方式。一切正常。

关于java - JPA - 仅使用 ID 保存对象时发生 TransientPropertyValueException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com