Spring Data:如何在使用@Embeddable和@Embedded时设置GenerationType策略

时间:2017-02-08 14:59:10

标签: java hibernate spring-boot spring-data-jpa

我正在尝试在Spring数据中使用@Embeddable@Embedded。以下是我的方法。

DeviceEntity:

@Entity
@Table(name = "device")
public class DeviceEntity implements Serializable {


      private static final long serialVersionUID = 1L;

      @EmbeddedId
      @AttributeOverrides({@AttributeOverride(name = "id" , column= @Column(name = "id",nullable = false))})
      private DeviceIdType deviceIdType;

.

DeviceIdType:

@Embeddable
public class DeviceIdType implements Serializable {

  private static final long serialVersionUID = 1L;

  @Column(name = "id")
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;

。 。

错误消息:

"code": "4715",
  "message": "Something went wrong",
  "additionalInfo": "null id generated for:class com.b.DeviceEntity; nested exception is org.hibernate.id.IdentifierGenerationException: null id generated for:class com.b.DeviceEntity"

现在,当我使用GenertionType策略时,我得到了这个例外。

因此,我的问题是:如何在使用@Embeddable和@Embedded时设置GenerationType策略?

1 个答案:

答案 0 :(得分:2)

大多数情况下,

.twitter-widget { display: inline-block; vertical-align: top; padding: 2px; position: relative; } @Embeddable用于JPA / Spring Data中的复合主键。

如果您使用简单生成的主键,则最好使用@EmbeddedId

@Id注释