gpt4 book ai didi

java - 定义与数据库无关的 JPA 对象 uid

转载 作者:行者123 更新时间:2023-11-30 07:36:40 25 4
gpt4 key购买 nike

事实证明,以下示例在使用 mysql 5.x 时有效,但在使用 oracle 10g 数据库时无效。

有没有办法定义一个独立于数据库技术的唯一标识符字段?

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private long id;

我已经在hibernate中测试过了,只有在使用Oracle时才会出现以下异常:

org.hibernate.MappingException: Dialect does not support identity key generation

最佳答案

使用数据库表是生成标识符的一种可移植方式。

使用表生成标识符的最简单方法是指定TABLE作为生成策略:

@Id
@GeneratedValue(strategy=GenerationType.TABLE)
@Column(name="id")
private long id;

如果您使用模式生成,提供者将创建默认表;如果没有,您必须指定一个现有表:

@TableGenerator(name="InvTab",
table="ID_GEN",
pkColumnName="ID_NAME",
valueColumnName="ID_VAL",
pkColumnValue="INV_GEN")
@Id
@GeneratedValue(generator="InvTab")
@Column(name="id")
private long id;

http://www.oracle.com/technology/products/ias/toplink/jpa/howto/id-generation.html#table

关于java - 定义与数据库无关的 JPA 对象 uid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3406837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com