如何在Hibernate中向一个延迟加载的集合添加元素而不会导致集合加载?

Chr*_*s R 5 java hibernate jpa lazy-loading

在锡上说的是什么; 我想修改Hibernate中的集合而不强制集合加载,因为它是一个大量的数据(大约100,000条记录,单调增加).

现在,我通过调用一个元素添加到此列表getEvents ().add (newEvent)中,当然,这会导致events填充.

这是映射:

<bag name = "events" inverse = "true" cascade = "all-delete-orphan"
 order-by = "event_date desc" lazy = "true">
  <key>
<column name = "document_id" length = "64" not-null = "true" />
  </key>
  <one-to-many class = "EventValue" />
</bag>
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

bla*_*pam 5

实现此目的的一种方法是在父对象(我们称之为 Parent)和事件之间创建双向关联,并配置休眠映射,以便该关系由事件管理。

为了实现这一点,您的 Hibernate 映射将类似于:

<class name="Parent"...>
    ...
    <bag name="events" lazy="true" inverse="true"...>...</bag>
    ...
</class>

<class name="Event"...> 
    <many-to-one name="parent">
    ...
</class>
Run Code Online (Sandbox Code Playgroud)

你的代码看起来会是这样的:

myEvent.setParent(parentObject);
eventDao.save(myEvent);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。祝你好运。