hibernate中的OneToMany映射:无法保存对象

时间:2013-12-24 07:01:15

标签: java database hibernate

我有一个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)保存用户对象时它不会被保存。我能想到的问题是我没有向文件集合添加任何值,也只是保存用户对象而不是文件对象,但这是必需的,因为用户可能没有必要上传文件。他可以拥有该帐户,他可能在服务器上有任何文件。如何在休眠中实现这一点。

1 个答案:

答案 0 :(得分:1)

使用级联

@OneToMany(mappedBy="user", cascade = CascadeType.PERSIST) 
@Column(nullable = true)
private Collection<Files> files=new ArrayList<Files>();