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 当组合键的一个元素是实体时,如何在JPA中声明组合键?_Java_Hibernate_Jpa_Composite Primary Key - Fatal编程技术网

Java 当组合键的一个元素是实体时,如何在JPA中声明组合键?

Java 当组合键的一个元素是实体时,如何在JPA中声明组合键?,java,hibernate,jpa,composite-primary-key,Java,Hibernate,Jpa,Composite Primary Key,有一张桌子 master id int primary key 及 与JPA实体的合作 @Entity @Table(name = "master") class Master { @Id private int id; } @Entity @Table(name = "detail") @IdClass(DetailId.class) class Detail { @ManyToOne @JoinColumn(name = "master_id") @Id Ma

有一张桌子

master
  id int primary key

与JPA实体的合作

@Entity
@Table(name = "master")
class Master {
  @Id
  private int id;
}

@Entity
@Table(name = "detail")
@IdClass(DetailId.class)
class Detail {
  @ManyToOne
  @JoinColumn(name = "master_id")
  @Id
  Master master;

  @Id
  String name;
}
和一个身份类

class DetailId {
  Master master;
  String name;
}
在运行时,Hibernate抱怨无法将
int
设置为初始化
Detail
类的
Master
字段


有什么想法吗?

DetailId
中,您不能使用实体:您需要将
Master
更改为
int-Master
。您需要实现
Serializable

class DetailId implements Serializable {

  int master;

  String name;

}

我认为您不需要使用
@Id
,而是需要使用其他东西。我认为它是
@EmbeddedId
参见
@Id
等文档,在这种情况下完全可用
DetailId
没有用
@Entity
注释,但是谢谢anyway@BorisPavlović我的意思是您需要将
Master-Master
更改为
int-Master
class DetailId implements Serializable {

  int master;

  String name;

}