java JPA mappedBy不使用关系持久化实体
例如,我有以下实体: 房间实体:
@Entity
public class Room extends Base {
@OneToMany(mappedBy = "room")
private List<Person> persons;
//getters and setters
}
个人和实体:
@Entity
public class Person extends Base {
@ManyToOne
private Room room;
private String name;
//getters and setters
}
如果我将person添加到文件室的persons列表中,然后继续,则会添加文件室,但不会添加person。我想,在OneToMany
注释中添加mappedBy
参数就足够了,但是。。我还应该做什么
# 1 楼答案
你需要在
@OneToMany
上设置CascadeType=PERSIST or ALL
。还可以在Person
类中设置room
变量来填充Person表中的外键# 2 楼答案
相反,将
Room
设置为Person
实例的房间字段:通过
mappedBy
,您可以指定哪个实体拥有关系。更新这两个实体之间的关系是拥有方的责任在您的示例中,
Person
拥有这个关系,所以他有责任更新外键,而不是Room
,所以当您向Room
中的人员列表添加Person
并更新Room
时,Room
不会为您更新外键