仅当未将Embedded类用作First类的ID时,才能在Embedded类内使用@Id注释吗?

时间:2019-02-27 11:17:11

标签: spring jpa id embeddable

我具有以下结构:

@Entity
class First {
  @Embedded
  private Second second;
  ..
  ..
}

@Embeddable
class Second {
  @Id
  private Long id;
  private String name;
  // and many attributes are not meant to be part of the Id
  ..
  ..
}

运行代码时,发生异常:

  

找不到第一个实体的ID。

反正可以在Embedded类中设置@id吗?

注意: 第二类不仅仅用作Id类,所以我不想使用EmbeddedId

1 个答案:

答案 0 :(得分:0)

选项1 。如果实体中有组合键,则应将@Embeddable标记为组合键类,并在嵌入式类中使用@EmbeddedId注释。

选项2。如果您不想使用@EmbeddedId并想在嵌入式类中使用@Id,请在嵌入式类的字段上使用@Id并在可嵌入的类中使用它类字段。不要创建可嵌入类的对象,而应在实体级别使用@IdClass注释。