如何通过Hibernate插入多个表

时间:2016-08-16 10:29:52

标签: java spring hibernate

我需要在Hibernate中插入两个表 - 我有一个用户,每个用户都属于一个成员。因此,在创建新用户时,我需要在Member表中添加一个新条目。我通过创建一个映射到我的成员表的Member对象,然后将其作为我的User对象中的一个字段映射到用户表来尝试这个

@Entity
@Table(name = "USER")
public class User
{
    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    @Column(name = "fullName")
    private String fullName;

    //other fields ommited

    @OneToOne
    @JoinColumn(name = "id")
    private Member member;

我的会员pojo看起来如下

@Entity
@Table(name = "MEMBER")
public class Member
{
    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;

    @Column(name = "sgpid")
    private int sgpid;

    @Column(name = "username")
    private String username;

尝试保存对象,如下所示;

@Override
public boolean addUser(User user)
{
    if (user == null)
    {
        throw new IllegalArgumentException("Unable to add null user");
    }

    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    session.save(user);
    session.getTransaction().commit();

    return true;
}

这为我提供了保存在用户表中的行,但该条目未插入到成员表中。我认为我的链接注释可能不正确,但我不太确定 - 请有人提供一些帮助。

由于

1 个答案:

答案 0 :(得分:1)

尝试设置@OneToOne注释的级联值:

@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "id")
private Member member;