Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OneTONE映射JPA-Cascade。所有不复制id列_Java_Hibernate_Jpa_Hibernate Annotations - Fatal编程技术网

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