首页 >数据库 >mysql教程 >如何使用 Hibernate 和 MySQL 在 Spring MVC 应用程序中生成抽象超类的 ID?

如何使用 Hibernate 和 MySQL 在 Spring MVC 应用程序中生成抽象超类的 ID?

Linda Hamilton
Linda Hamilton原创
2024-11-12 22:17:02867浏览

How to Generate IDs for Abstract Superclasses in a Spring MVC Application Using Hibernate and MySQL?

多态抽象超类和 MySQL 身份生成

在使用 Hibernate 和 MySQL 的 Spring MVC 应用程序中,管理抽象超类和 MySQL 的 ID 的挑战他们的子类出现了。 GenerationType.IDENTITY与抽象超类不兼容,并且MySQL缺乏对序列的支持。如何解决这个问题?

首先,了解 MySQL 的局限性很重要:它无法同时生成 ID 和插入记录。然而,Hibernate 在实体插入期间期望具有此功能。

为了解决这个问题,可以实现“LAST_IDS”表。该表跟踪每个相关实体最后分配的 ID。以下步骤概述了使用此方法生成和保存 ID 的过程:

  1. 启动读取乐观事务
  2. 最大 ID 查询: 从其中选择 MAX(entity_id) LAST_IDS
  3. 变量存储:将最大ID分配给变量($OldID)。
  4. 新ID计算: $NewID = $OldID 1 (或者悲观锁定更高)。
  5. 乐观update: UPDATE LAST_IDS SETEntity_id= $NewID WHEREEntity_id= $OldID?
  6. 事务提交: 提交乐观事务。
  7. 分配给实体: 如果提交成功,将生成的$NewID设置为要提交的实体使用 setID() 保存。
  8. Hibernate 插入: Hibernate 执行插入操作。

通过利用这种方法,ID 生成和管理与抽象超类兼容以及 MySQL 的限制。值得注意的是,Hibernate 实体中的继承通常只应在支持数据库中的继承关系时使用,例如 PostgreSQL 或 Oracle。

以上是如何使用 Hibernate 和 MySQL 在 Spring MVC 应用程序中生成抽象超类的 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn