Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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/2/spring/12.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 实体作为一对一关系的键返回“;复合ID“;错误_Java_Spring_One To One_Composite Key_Hibernate Annotations - Fatal编程技术网

Java 实体作为一对一关系的键返回“;复合ID“;错误

Java 实体作为一对一关系的键返回“;复合ID“;错误,java,spring,one-to-one,composite-key,hibernate-annotations,Java,Spring,One To One,Composite Key,Hibernate Annotations,我有以下两个实体: @Entity(name = "Employee") @Table(name = "EMPLOYEE") public class Employee implements Serializable { @Id @Column(name = "EMP_ID", insertable = true, updatable = false, nullable = false) private int id; 及 让我们说这就是他

我有以下两个实体:

   @Entity(name = "Employee")
   @Table(name = "EMPLOYEE")
   public class Employee implements Serializable {
      @Id
      @Column(name = "EMP_ID", insertable = true, updatable = false, nullable = false)
      private int id;

让我们说这就是他们想要的建模方式。这是指定的一对一关系。但是,当我进行测试时,会出现以下错误:

嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[META-INF/spring/datasource context.xml]中定义的名为“sessionFactory”的bean时出错:调用init方法失败;嵌套异常为org.hibernate.MappingException:复合id类必须实现可序列化:com.myprojects.tet.data.entity.Draw

为什么将
绘图中的
员工
键解释为复合id?还有,如何修复此错误。引用的实体必须是可序列化的,但它还需要实现方法
equals
hashCode
(我还没有实现)。这两种方法的实现是否应该修复该错误

为清晰起见进行编辑:

我有两个建模表:
EMPLOYEE
DRAW

EMPLOYEE
有:integer
emp\u id
,以及许多其他列

DRAW
具有:整数
emp\u id
,整数
总点数


绘图表将每隔一段时间填充和清除一次,因此列
totalPoint
不能在表
EMPLOYEE
中。我不确定我的实体关系是否正确(即将实体
员工
作为
绘图
的id)。

@JoinColumn
替换为:


@尼姆奇普:看一看,看起来是一个类似的问题。嗨,托马斯,看起来是一样的。如果我理解正确,这两种方法都是不同的(JPA一种和book一种),这个假设正确吗?@Nimchip:如果你参考我上面提到的答案,他们提供了一个使用Hibernate特定注释的解决方案。谢谢,我想这已经解决了这个问题。
@Entity(name = "Draw")
@Table(name = "DRAW")

public class Draw extends AuditableEntity {
    @Id
    @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinColumn(name = "EMP_ID", referencedColumnName = "EMP_ID")
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
        org.hibernate.annotations.CascadeType.MERGE})
    private Employee employee = null;
@Id
@Column(name = "EMP_ID")
private int id;

@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@PrimaryKeyJoinColumn(name = "EMP_ID", referencedColumnName = "EMP_ID")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.MERGE})
private Employee employee;