我试图寻找这个特定的问题,但没有得到任何帮助
创建员工时,应创建-->帐户。
我的实体是-->雇员实体
@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上搜索了这么多问题,但到目前为止还没有成功。感谢您的帮助。
先谢谢你
1条答案
按热度按时间nnvyjq4y1#
如果@onetoone是在关系的两边定义的,那么其中一方应该是所有者。即具有外键的实体。另一边应该有mappedby属性。所以下面的方法对我有用