Java 我可以单独使用@GenericGenerator而不使用@GeneratedValue吗?
在学习java时,我还没有看到一个明确的答案。请澄清Java 我可以单独使用@GenericGenerator而不使用@GeneratedValue吗?,java,hibernate,Java,Hibernate,在学习java时,我还没有看到一个明确的答案。请澄清 @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid2") @JsonExclude private String id; 问题1:我可以单独使用GenericGenerator吗 问题2:如果我在我的对象中传递“id”,@GeneratedValue还会生成新的id并覆盖传递的id吗?如果是这样,如何保持现有id,
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@JsonExclude
private String id;
问题1:我可以单独使用GenericGenerator吗
问题2:如果我在我的对象中传递“id”,@GeneratedValue还会生成新的id并覆盖传递的id吗?如果是这样,如何保持现有id,不调用@GeneratedValue
问题1:我可以单独使用GenericGenerator吗
不是真的。它采用由@GeneratedValue
定义的生成器的名称
问题2:如果我在我的对象中传递“id”,@GeneratedValue还会生成新的id并覆盖传递的id吗?如果是这样,如何保持现有id,不调用@GeneratedValue
这取决于底层实现。通常,如果对象已经设置了ID,则不会再次生成该对象。但是,您不应该自己处理ID,您应该让EntityManager
管理这些ID
保存新实体时,不会设置id
,因此生成器将在保存实体时创建一个新实体。当您从数据存储中查询实体时,它将由持久性框架(在本例中为hibernate)填充。它还将跟踪该实例,以便将来对可能要保存回的实体进行更新