有人可以解释一下hibernate映射文件中cascade = "evict"
的用法。hibernate hbm文件中cascade = evict的用法是什么
映射文件摘录:
<set name="details" cascade="evict">
<key column="detailid"></key>
<one-to-many class="com.intialize.example.Details"/>
</set>
有人可以解释一下hibernate映射文件中cascade = "evict"
的用法。hibernate hbm文件中cascade = evict的用法是什么
映射文件摘录:
<set name="details" cascade="evict">
<key column="detailid"></key>
<one-to-many class="com.intialize.example.Details"/>
</set>
逐出相同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);
}
希望这有助于拆卸的实体。
从休眠的Javadoc:
该操作[
evict()
]级联到相关联的情况下,如果所述关联映射与cascade="evict"
。
随着驱逐你告诉Hibernate从第一级缓存上下文和像所有其他操作(持久化,更新,删除等)可以级联到特定的所有子删除实体关系...
所以,当你打电话赶在哪里这个关系被定义
<set name="details" cascade="evict">
<key column="detailid"></key>
<one-to-many class="com.intialize.example.Details"/>
</set>
Hibernate是要驱逐过相关
我把你点的所有详细信息的实体,尽管我们打电话给e显式地为vict()方法,为什么我们在hibernate映射文件中再次声明cascade =“evict” – user3094331
级联表示如果您调用父对象上的evict将级联到其子级 –
我现在明白了,谢谢 – user3094331