Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA-保存只有ID的对象时发生TransientPropertyValueException_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA-保存只有ID的对象时发生TransientPropertyValueException

Java JPA-保存只有ID的对象时发生TransientPropertyValueException,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个名为invoice的对象,它有一个字段,它是一个复杂的对象 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 S

我有一个名为invoice的对象,它有一个字段,它是一个复杂的对象

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:非空属性引用一个瞬时值


即使数据库中存在站点Id。有一种方法可以执行此保存,而不必首先使用select从数据库获取站点?

如果使用
EntityManager
,您可以尝试调用
getReference()
,请参阅以了解详细信息

使用Hibernate的
会话
也可以使用
load()

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

一个音符


在Hibernate的
会话中
我使用您的方法来设置仅具有
id
的对象关联。一切正常。

更改创建顺序,此错误表示您正在创建对尚未创建的对象的引用。创建站点,然后创建发票。

你能提供完整的stacktrace吗?他在数据库中已经有了
站点。他想设置一个假的
站点
,只填充
id
,而不从数据库加载整个
站点