Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate-Version属性在更改时调用自动更新?_Java_Hibernate_Jpa_Orm - Fatal编程技术网

Java Hibernate-Version属性在更改时调用自动更新?

Java Hibernate-Version属性在更改时调用自动更新?,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,当以编程方式检索实体并操作它们的某些属性时,hibernate on commit incrementing my db generated version column会调用自动更新,而无需手动调用session.update()。(甚至进行验证)。 我对自己的高版本值和验证感到惊讶 休眠4.3.1 这些实体仍然附着到会话 伪代码: Session session = sessinFactory.openSession(); Transaction tr = session.beginTran

当以编程方式检索实体并操作它们的某些属性时,hibernate on commit incrementing my db generated version column会调用自动更新,而无需手动调用
session.update()
。(甚至进行验证)。
我对自己的高版本值和验证感到惊讶

休眠4.3.1

这些实体仍然附着到会话

伪代码:

Session session = sessinFactory.openSession();
Transaction tr = session.beginTransaction();

Entity entity = session.get(Entity.class, 1);

entity.setFoo("foo");

tr.commit();
session.close(); // here fake-update takes place
问题:

Session session = sessinFactory.openSession();
Transaction tr = session.beginTransaction();

Entity entity = session.get(Entity.class, 1);

entity.setFoo("foo");

tr.commit();
session.close(); // here fake-update takes place
这是一个功能吗

我可以尝试分离要操纵的实例


还是这是一只虫子?对我来说,这更像是一个bug,因为我没有调用更新。但不是假的更新。

是的,这是一个功能。当调用
tr.commit()
时,会刷新会话。将检查与会话关联的每个对象是否为“脏”(状态已更改)。无论是否调用显式保存,每个更改的对象都将持久化到数据库。此外,如果实体脏了,Hibernate将在刷新期间自动增加version属性。

感谢您的澄清。我只是没有看到数据库中的更改,因为我修改的列被标记为不可更新。