[英]hibernate ID increment oracle
我设法通过将每个表的ID放入每个实体类,使休眠状态将每个表的ID递增1。
@Entity
public class TestObject implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="idgen")
@SequenceGenerator(
name="idgen",
sequenceName="testobject_seq",
allocationSize=1,
initialValue=1
)
我有两个表,这些表通过Oracle SQL Developer手动填充数据。 创建完表格后。
<property name="hibernate.hbm2ddl.auto">create</property>
对于其中有数据的2个表,我将initialValue设置为所需的值。 例如,表testchamber具有22行数据。 所以我的注释变为:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="idgen")
@SequenceGenerator(
name="idgen",
sequenceName="testchamber_seq",
allocationSize=1,
initialValue=23
)
但是,当我尝试保存新的testChamber实体时,出现此错误。
org.hibernate.NonUniqueObjectException: A different object with the same identifier value was already associated with the session
在更改注释之前,我可以保存我的实体而不会出现问题,但是使用旧注释时,hibernate会随机增加id。 例如,休眠给新实体id 60、61,而不是23、24,依此类推。
这是我的旧注释:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
这篇文章帮助我解决了问题“ 链接” 。 但是@nolexa的回答是正确的,而不是来自Alex Gitelman的,实际上被检查为正确的。 我把这个
<property name="hibernate.id.new_generator_mappings">true</property>
放入我的hibernate.cfg.xml文件中,所有创建的序列现在都可以正常工作。 非常感谢@nolexa!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.