【问题标题】:JPA Biderecional relationJPA 双边关系
【发布时间】:2022-02-02 15:53:44
【问题描述】:

我正在尝试在用户表和代码表之间创建一对一的关系。

1 个用户可以有 1 个代码,但这不是强制性的。

代码类

@Entity
@Table(name = "codes")
public class Code  {
     ...

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "user_id", nullable = false)
    private User user;
    ...
}

用户类

@Entity
@Table(name = "users")
public class User {
    ...
    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Code code;
}

流:

当我创建代码时,我提供了一个用户,它会自动将用户 ID 添加到代码表中但是用户表将代码列保持为空。

问题: 我在这里做错了什么?我期待当我创建一个代码时,用户表也会更新为 PIN 码。

【问题讨论】:

  • 显示配置CodeUser之间关系的代码

标签: java jpa one-to-one bidirectional


【解决方案1】:

所有者是用户。用户控制关系。

@Entity
@Table(name = "codes")
public class Code  {
     ...

    @OneToOne(mappedBy = "code", fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", nullable = false)
    private User user;
    ...
}

@Entity
@Table(name = "users")
public class User {
    ...
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
    private Code code;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2011-03-29
    • 1970-01-01
    相关资源
    最近更新 更多