我有一个Web应用程序,我正在使用hibernate进行数据存储。我有两个实体类USERS AND FILES
,用户可以将文件上传到服务器,因此用户实体用于存储用户数据,文件实体用于存储文件。在用户实体中,我编写以下代码
@OneToMany(mappedBy="user")
@Column(nullable = true)
private Collection<Files> files=new ArrayList<Files>();
public Collection<Files> getFiles() {
return files;
}
public void setFiles(Collection<Files> files) {
this.files = files;
}
并在文件实体类
中@ManyToOne
@JoinColumn(name="uid")
private Users user;
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
每当我运行应用程序时,hibernate都会使用外键创建表格,但是当我尝试通过session.save(u)
保存用户对象时它不会被保存。我能想到的问题是我没有向文件集合添加任何值,也只是保存用户对象而不是文件对象,但这是必需的,因为用户可能没有必要上传文件。他可以拥有该帐户,他可能在服务器上有任何文件。如何在休眠中实现这一点。
答案 0 :(得分:1)
使用级联
@OneToMany(mappedBy="user", cascade = CascadeType.PERSIST)
@Column(nullable = true)
private Collection<Files> files=new ArrayList<Files>();