[英]In Hibernate, when an object's fields are lazy loaded, can I only change one of the fields and do update(object)?
考虑到这一点:
@Entity
class Order
{
@Id
public int id;
@OneToOne
Person person;
@OneToOne
Address address;
//Other Fields
}
我有一个延迟加载的订单。 我更改此订单的地址。 请注意,我尚未访问Person(因此未加载)。 那我做
update(order);
我想知道在这种情况下人员表中的数据库记录会发生什么。 我不希望关联的人记录更新为空。 当我测试时,它没有更新为空。
据我了解,个人引用分配了一个代理对象,而不是null。
Hibernate是否注意如果未加载对象(在这种情况下为person对象),则否
关联记录或记录已更改(在这种情况下,人员表记录)?
这样更新是否安全?
谢谢 !
JPA仅更新已更改的实体。 我不知道有任何update()方法,您可以只使用commit()或flush(),并且会话中所有更改的实体都将保留在数据库中。
延迟加载的属性只是根本不加载的代理对象,您也可以通过调用以下方法手动执行此操作:[entityManager.getReference] [3]
[3]: http : //download.oracle.com/javaee/5/api/javax/persistence/EntityManager.html#getReference (java.lang.Class,java.lang.Object)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.