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
Hibernate &引用;映射为;冬眠_Hibernate - Fatal编程技术网

Hibernate &引用;映射为;冬眠

Hibernate &引用;映射为;冬眠,hibernate,Hibernate,我有两个实体类: User.java Address.java 一个用户可以有多个地址(一对多) 多个地址可以属于一个用户(多对一) User.java @OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy=“user”) private Set userAddresses=new HashSet(); Address.java @manytone(fetch=FetchType.LAZY) @JoinColumn(na

我有两个实体类:

User.java

Address.java

一个用户可以有多个地址(一对多) 多个地址可以属于一个用户(多对一)

User.java
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy=“user”)
private Set userAddresses=new HashSet();
Address.java
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“UserID”)
私人用户;
问题是,尽管在这两个表中正确插入了值,但外键列(即UserID)没有被更新。 有人能告诉我上面的代码有什么问题吗?

您在
@OneToMany
注释中缺少
targetEntity=Address.class
参数。因为:

如果使用泛型定义集合以指定元素类型,则无需指定关联的目标实体类型;否则,必须指定目标实体类。

所以它应该是这样的:

User.java
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,
targetEntity=Address.class,mappedBy=“user”)
private Set userAddresses=new HashSet();
Address.java
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“UserID”)
私人用户;

显示如何设置
地址
用户属性的代码。@Ken Chan嗨,我搞错了,我没有在地址中保存用户属性。在一对一关系中,多方是关系的所有人,对吗?但是通过指定
mappedBy=user
,我们可以说user是拥有的实体。您能解释一下上述概念吗?此链接澄清了我的疑问:
User.java
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="user")
private Set<Address> userAddresses = new HashSet<Address>();

Address.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="UserID")
private User user;