2017-10-11 91 views

回答

1

逐出相同DETACH和已弃用。

见API文档 https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/CascadeType.html#EVICT

这里约级联类型的优秀文章: https://vladmihalcea.com/a-beginners-guide-to-jpa-and-hibernate-cascade-types/

从文档

5.12。退出实体 调用flush()方法时,实体的状态与数据库同步。如果您不想进行此同步,或者您正在处理大量对象并需要高效管理内存,则可以使用evict()方法从第一级缓存中删除对象及其集合。

实施例329从EntityManager的

for(Person person : entityManager.createQuery("select p from Person p", Person.class) 
     .getResultList()) { 
    dtos.add(toDTO(person)); 
    entityManager.detach(person); 
} 

实施例330从休眠会话

驱逐的实体
Session session = entityManager.unwrap(Session.class); 
for(Person person : (List<Person>) session.createQuery("select p from Person p").list()) { 
    dtos.add(toDTO(person)); 
    session.evict(person); 
} 

希望这有助于拆卸的实体。

+0

我把你点的所有详细信息的实体,尽管我们打电话给e显式地为vict()方法,为什么我们在hibernate映射文件中再次声明cascade =“evict” – user3094331

+0

级联表示如果您调用父对象上的evict将级联到其子级 –

+0

我现在明白了,谢谢 – user3094331

0

从休眠的Javadoc:

该操作[evict()]级联到相关联的情况下,如果所述关联映射与cascade="evict"

0

随着驱逐你告诉Hibernate从第一级缓存上下文和像所有其他操作(持久化,更新,删除等)可以级联到特定的所有子删除实体关系...

所以,当你打电话赶在哪里这个关系被定义

<set name="details" cascade="evict"> 
    <key column="detailid"></key> 
    <one-to-many class="com.intialize.example.Details"/> 
</set> 

Hibernate是要驱逐过相关

相关问题