【发布时间】:2015-10-24 13:37:21
【问题描述】:
我正在尝试在 Hibernate 中自动生成字母数字(例如 TESLA1001)主键。我目前正在使用 Oracle 数据库,因此我对 my_sequence.NEXTVAL (1002) 进行了 JDBC 调用,以增加数字并附加到前缀 (TESLA)。
我们正在考虑将 MySQL 作为一个选项,但它们不支持序列。所以我不得不重写使用 JDBC 调用存储过程的自定义 ID 生成技术。
有什么方法可以在不使用 JDBC 和数据库相关查询的情况下生成自定义主键的通用实现?因此,将来,如果我需要使用 MSSQL 测试我的应用程序,我只需要更改我的休眠配置,一切正常!
【问题讨论】:
-
你有 MySql 的自动增量
-
是的,但自动增量仅适用于一个表,如果您有多个表,您可以从所有涉及的所有内容中查询 last_insert_id() 或者您可以使用触发器。
-
另外,使用存储过程来实现序列并不难,例如表序列(名称,数字)和一个过程 getNext(name) 将数字加一并返回它。
标签: java mysql oracle hibernate primary-key