- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我是 hibernate 新手。我不明白以下两种主键生成策略:
有人能解释一下这两者是如何工作的吗?这两者有什么区别?
最佳答案
引用 Java Persistence/Identity and Sequencing :
Identity sequencing uses special IDENTITY columns in the database to allow the database to automatically assign an id to the object when its row is inserted. Identity columns are supported in many databases, such as MySQL, DB2, SQL Server, Sybase and Postgres. Oracle does not support IDENTITY columns but they can be simulated through using sequence objects and triggers.
用简单的英语:你最多标记一个 ID
表中的列作为 IDENTITY。数据库引擎会自动为您设置下一个可用值。
还有:
Sequence objects use special database objects to generate ids. Sequence objects are only supported in some databases, such as Oracle, DB2, and Postgres. Usually, a SEQUENCE object has a name, an INCREMENT, and other database object settings. Each time the
<sequence>.NEXTVAL
is selected the sequence is incremented by the INCREMENT.
序列更灵活,也稍微复杂一些。您在数据库中的表、触发器等旁边定义了一个额外的对象,称为 sequences。序列基本上被命名为计数器,您可以在查询中的任何位置使用。
关于java - @GeneratedValue(strategy ="IDENTITY") 与 @GeneratedValue(strategy ="SEQUENCE"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955074/
我是 hibernate 新手。我不明白以下两种主键生成策略: 身份 顺序 有人能解释一下这两者是如何工作的吗?这两者有什么区别? 最佳答案 引用 Java Persistence/Identity
问题: 我想在 hibernate 中映射以下内容 我在实现用户表时得到的错误是: 无法通过 User.id 的反射 setter 设置字段值 我正在使用 MySql 并且字段 ID 是自动递增的 @
我的 hibernate 配置如下: Entity @Table (name = "statuspaatelling") public class StatusPaaTelling { private
我有如下所示的实体,但无法理解为什么当我添加新记录时,生成的 ID 为 50、51、52... 如果 select nextval('seq_text'); 返回 1523 , 1524... 数据库
我有一个实体,它有一个非键列,我已将其设置为在我的数据库中自动生成。 我不能使用 @GeneratedValue,因为据我所知,它仅适用于关键字段。 在这种情况下,如何指示非键列是自动生成的? 最佳答
我的本地 postgres 数据库中有 10-15 个实体。 所有实体都包含一个整数类型的标识。请参阅下面的代码片段。 @Id @GeneratedValue(strategy = Generatio
这是我的实体: @Entity @Table @NoArgsConstructor @AllArgsConstructor @Setter @Getter public class Sample {
我很难找到对@GeneratedValue 的准确解释以及从数据库的角度来看发生的事情的不同策略。 是否总是查询数据库并返回最后一个可用值?如果 2 个不同的进程(不同的 Hibernate 应用程序
我正在开发一个必须部署在多个环境中的应用程序,使用不同的 RDBMS,即 MySQL、MariaDB 和 Oracle。这意味着不同的 ID 生成模式(自动递增与序列)。 JPA 应该允许从 RDBM
我有这个用户类 @Entity public class User { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
我使用 MyEclipse 中的 Scaffolding 生成 Web 应用程序项目,使用 spring MVC 和 MySQL 数据库。请给我一些解决问题的线索。 我遇到了 id 主键的问题。如果我
我设置我的实体属性 @GeneratedValue Long id; 并且我能够为数据库中的实体生成 ID。我的问题是为什么所有实体都共享相同的增量数字? 不是每个表都应该从零开始计数吗? 最佳答案
我试图用我想从数据库序列填充的属性来持久化一个实体。我正在使用 Oracle,已经创建了序列,通过 sql 验证了序列有效,但我的属性没有被填充。这是我所拥有的: @GeneratedValue(ge
我正在使用 hibernate 为表自动生成 ID,但我需要手动插入一些与另一个表相关的行(大约 10k,一次)。我正在使用 Oracle 数据库。我怎样才能做到这一点? hibernate 如何生成
JPA规范对注解@GeneratedValue(strategy=TABLE)给出了如下解释: The TABLE generator type value indicates that the pe
我有一个 hibernate 实体父类(super class): @MappedSuperclass public abstract class Pojo_Entity_SuperClass {
我真的很难理解为什么当表已经提供 auto_increment 时还要使用 @ generatedValue 来自动递增。有人可以向我解释一下吗? 最佳答案 @GenerateValue 用于通知 J
我是 postgresql 的新手。 在使用 Ebean 的 playframework 中,我使用了 mysql 和自动生成的值,在那种情况下实际上是自动递增的。我得到的序列是 1,2,3,4...
我正在使用 JPA 的 EclipseLink 实现,但遇到了问题。 这是我的实体类: @Entity@Table(name = "attendances")public class Attendan
我正在使用 JPA,当我将数据插入数据库时,我的 ID 会自动增加 50。我正在使用 persistence.GeneratedValue 来自动增加它: 这是我的模型/实体类的样子(要插入的实体
我是一名优秀的程序员,十分优秀!