正在学习Java,我还没有一个明确的答案。任何澄清表示赞赏。
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@JsonExclude
private String id;
Q1:我可以单独使用GenericGenerator吗?
Q2:如果我在对象中传递“ id”,@ GeneratedValue是否仍会生成新的ID并覆盖传递的ID?如果是这样,如何保留现有ID,不要调用@GeneratedValue吗?
答案 0 :(得分:1)
Q1:我可以单独使用GenericGenerator吗?
不是。它采用由@GeneratedValue
定义的生成器的名称。
Q2:如果我在对象中传递“ id”,@ GeneratedValue是否仍会生成新的ID并覆盖传递的ID?如果是这样,如何保留现有ID,不要调用@GeneratedValue吗?
这取决于基础实现。通常,如果对象已经设置了ID,则不会再次生成。但是,您不应自己弄乱ID,而应让EntityManager
管理ID。
保存新实体时,它不会设置id
,因此生成器在保留实体时会创建一个新实体。当您从数据存储区查询实体时,该实体将由持久性框架填充(在这种情况下为休眠)。它还会跟踪该实例,以查找您将来可能想要保存的对实体的任何更新。