gpt4 book ai didi

java - 在Hibernate中,当一个对象的字段被延迟加载时,我可以只更改其中一个字段并执行update(object)吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:53 25 4
gpt4 key购买 nike

考虑到这一点:

   @Entity 
class Order
{
@Id
public int id;

@OneToOne
Person person;

@OneToOne
Address address;

//Other Fields
}

我有一个延迟加载的订单。我更改了该订单的地址。请注意,我尚未访问该 Person (因此未加载)。然后我就这么做

update(order);

我想知道在这种情况下,person 表中的数据库记录会发生什么情况。我不希望关联的人员记录更新为空。当我测试时,它没有用空值更新。

根据我的理解,person 引用被分配了一个代理对象而不是 null。

Hibernate 是否会注意如果对象未加载(在本例中为 person 对象),则不会
关联的一条或多条记录被更改(在本例中为 person 表记录)?

进行这样的更新安全吗?

谢谢!

最佳答案

JPA 仅更新已更改的实体。我不知道有任何 update() 方法,你可以只使用 commit()flush()并且 session 中发生更改的所有实体都将保留到数据库中。

延迟加载的属性只是根本不加载的代理对象,您也可以通过调用手动执行此操作:[entityManager.getReference][3]

[3]:http://download.oracle.com/javaee/5/api/javax/persistence/EntityManager.html#getReference(java.lang.Class ,java.lang.Object)

关于java - 在Hibernate中,当一个对象的字段被延迟加载时,我可以只更改其中一个字段并执行update(object)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5133156/

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