【发布时间】:2017-08-03 15:11:39
【问题描述】:
@Entity
public class Categorie {
private Long id;
private String nom;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
}
我需要的是:
1) id == null(id没有赋值),策略是自增
2) id != null (id 已赋值),将实体赋值给持久化
请帮忙
【问题讨论】:
-
似乎你想打破 JPA 的想法。为什么?举个真实的例子
-
我不明白你想要达到什么目的。如果 id 存在或不存在,对 merge() 或 persist() 的调用将更新或插入。
-
您对自动生成的 ID 有一个奇怪的想法。 ID 自动生成不是后备策略;在应用时,它是 策略。您无法为自动生成 ID 的任何类型的实体选择 ID。
-
你为什么要做这样的事情?
-
JPA 不允许这种情况;它要么分配值(当您指定
@GeneratedValue时)或不分配值(当未指定时)。我知道 DataNucleus JPA 提供了完全按照您的意愿执行的选项(仅在 null 时生成),但这是供应商扩展
标签: java spring jpa spring-boot spring-data-jpa