Java OneTONE映射JPA-Cascade。所有不复制id列
我试图搜索这个特定的问题,但没有得到任何帮助 创建员工时,应创建-->帐户 我的实体是-->员工实体Java OneTONE映射JPA-Cascade。所有不复制id列,java,hibernate,jpa,hibernate-annotations,Java,Hibernate,Jpa,Hibernate Annotations,我试图搜索这个特定的问题,但没有得到任何帮助 创建员工时,应创建-->帐户 我的实体是-->员工实体 @Entity @Table(name = "EMPLOYEE") public class EMPLOYEE implements Serializable { private static final long serialVersionUID = -1798070786993154676L; @Id @Column(name = &
@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
}
帐户实体-->
创建员工时,应创建-->帐户
我的pojo映射正确,如下所示-->
所以,当我使用相同的employee对象时,它会生成employee_id,但在account表中不会填充相同的employee_id
它部分工作-->帐户表中的员工id未填充。
我试着在StackOverflow上搜索了这么多问题,但到目前为止运气不好。
感谢您的帮助
提前感谢如果在关系双方都定义了@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;
}
如果@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;
}
您是否在代码中的任何位置执行
ACCOUNT.setEmployee(employee)
操作?请提供有关如何构造employee
&ACCOUNT
对象并保存该对象的信息。添加了有关我的employee对象越来越多的更多信息。您执行ACCOUNT.setEmployee(employee)操作吗
代码中的任何位置?请提供有关如何构造员工
和帐户
对象并保存它的信息。添加了有关我的员工对象的更多信息Hi Rasha,感谢您的回答,但这对我不起作用,上下文方面我的员工是所有者当创建员工帐户时,我尝试了以下操作并成功了:employee e=new employee();账户a=新账户();e、 设置帐户(a);a、 雇员(e);entityManager.persist(e);嗨,Rasha,谢谢你的回答,但这对我不起作用,从上下文角度看,我的员工是所有者当员工创建帐户时,我尝试了以下操作并成功了:
员工e=新员工();账户a=新账户();e、 设置帐户(a);a、 雇员(e);entityManager.persist(e);
@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;
}