java - 如何通过Hibernate插入多个表

标签 java spring hibernate

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

@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;

我的成员(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;
}

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

谢谢

最佳答案

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

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

关于java - 如何通过Hibernate插入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38972530/

相关文章:

java - 为什么 Weblogic 工作管理器拒绝工作

java - 覆盖迭代器类型

java - ExecutorService 的 future 任务并未真正取消

java - Logback-test.xml 配置生成两个日志文件而不是一个?

spring - 在 spring boot 启动时在 postgres 中创建一个模式

java - 如何将枚举类型存储为小写字符串?

java - Hibernate连接表错误: Unable to find column with logical name

java - 使用 hibernate 序列中的主键

java - 如何在JHIPSTER生成的上下文中更改HikariDataource bean名称?

java - 对空结果集的非法操作