How to persist a Hibernate child entity without loading the parent-side Set collection

后端 未结 2 1022
暗喜
暗喜 2021-01-07 09:51

We are using Hibernate 3.5.6-Final with Hazelcast 3.6.1 2nd level cache.

Situation

I have a bi-directional, one-to-many relation between a Parent

2条回答
  •  暖寄归人
    2021-01-07 10:43

    There's a better way:

    1. You need to make the many-to-one side lazy.

      
      
    2. As long as you don't need to fetch the Parent entity in the currently running Persistence Context, you can just fetch a Proxy reference:

      Parent parentProxy = session.load(Parent.class, parentId);
      
    3. Now, you can simply create a new child as follows:

      Child newChild = new Child();
      child.setParent(parentProxy);
      session.persist(newChild);
      

    Another workaround is as follows:

    You don't even fetch a Parent Proxy reference, but instead, you do as follows:

    Parent parentReference = new Parent();
    parentReference.setId(parentId);
    
    Child newChild = new Child();
    child.setParent(parentReference);
    session.persist(newChild);
    

    This way, you don't need to fully fetch the Parent entity if all you need is to persist a Child entity.

提交回复
热议问题