当您创建像这样的id时
@Id
@GeneratedValue(generator = "increment")
private Long Id;生成器字段的作用是什么?生成器的含义是什么?
JPA的任何实现是否应该提供所有类型的生成器:示例生成器=“增量”?
发布于 2021-10-28 21:31:01
这是一种创建唯一ids的方法。不同的数据库提供了不同的创建唯一ids的方法。换句话说,当保存新行时,Hibernate/JPA会自动将一个值放到该字段中。例如,mysql提供自动增量列(strategy=identity),而oracle提供序列(strategy=identity)。
如果数据库不提供上述任何功能,策略table将使用由JPA创建的表,该表用于以安全的方式创建唯一的、单调递增的数字,代价是对数据库进行额外的查询。
来自hibernate的关于这个主题的文档非常非常好,值得一读……而且Hibernate比JPA有更多的特性,这是很好了解的。
发布于 2021-10-28 22:49:31
文档上写着:https://docs.oracle.com/javaee/6/api/javax/persistence/GeneratedValue.html#generator()
生成器字段是您指定的位置:在SequenceGenerator或TableGenerator注释中指定要使用的主键生成器的名称。
但在我给出的示例(增量)中,它还不止于此,您可以使用该字段指定一个hibernate生成器,它不是JPA的一部分。
增量就是其中之一。如果您想了解更多关于它们的信息,请查看此处:https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#d5e2614
https://stackoverflow.com/questions/69760847
复制相似问题