onetooneMapjpa-cascade.all不复制id列

ego6inou  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(257)

我试图寻找这个特定的问题,但没有得到任何帮助
创建员工时,应创建-->帐户。
我的实体是-->雇员实体

@Entity
@Table(name = "EMPLOYEE")
public class EMPLOYEE implements Serializable {

    private static final long serialVersionUID = -1798070786993154676L;

    @Id
    @Column(name = "EMPLOYEE_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int EMPLOYEE_id;

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

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

    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name = "EMPLOYEE_id")
    @MapsId
    private ACCOUNT account;

    // getters and setters 
}

账户实体-->

@Entity
@Table(name = "ACCOUNT")
public class ACCOUNT implements Serializable {

    private static final long serialVersionUID = -6790693372846798580L;

    @OneToOne( fetch = FetchType.LAZY)
    @JoinColumn(name = "EMPLOYEE_id")
    private EMPLOYEE employee

    @Id
    @Column(name = "account_id")
    private int account_id;

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

 // getters setters 
}

创建员工时,应创建-->帐户。
我的pojoMap正确,如下所示-->

employee = { EMPLOYEE_id = 0 ,
        EMPLOYEE_name = 'abc' ,
        EMPLOYEE_desc = 'new employee' ,
        account = { account_id = 1 ,
                    account_desc = 'my account' ,
                    EMPLOYEE_id = 0  }
        }

所以当我使用同一个employee对象时,它会生成employee\u id,但在account表中不会填充同一个employee\u id
它部分工作-->在account表中employee\u id没有填充。
我试着在StackOverflow上搜索了这么多问题,但到目前为止还没有成功。感谢您的帮助。
先谢谢你

nnvyjq4y

nnvyjq4y1#

如果@onetoone是在关系的两边定义的,那么其中一方应该是所有者。即具有外键的实体。另一边应该有mappedby属性。所以下面的方法对我有用

@Entity
@Table(name = "EMPLOYEE")
public class EMPLOYEE implements Serializable {
  @OneToOne(cascade= CascadeType.ALL, mappedBy = "employee") // non-owner side
  private Account account;
  ....
}

@Entity
@Table(name = "ACCOUNT")
public class Account implements Serializable {
  @OneToOne( fetch = FetchType.LAZY)
  @JoinColumn(name = "EMPLOYEE_id") // owner-side
  private Employee employee;
}

相关问题