繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM