事实证明,以下示例在使用 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 http://www.oracle.com/technology/products/ias/toplink/jpa/howto/id-generation.html#table
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)