gpt4 book ai didi

hibernate - 获取持久化上下文中托管实体实例的列表

转载 作者:行者123 更新时间:2023-12-02 22:18:20 25 4
gpt4 key购买 nike

有没有办法获取 JPA/Hibernate 4.x 中给定 Session/EntityManager 的“已知”实体实例列表?

“已知”是指加载、创建或更改,即存在于持久性上下文中的托管实体。我知道 EntityManager#contains 方法,所以我猜测维护了这样一个列表,但是我如何才能获取它?

编辑:另外,如何查询持久实体的状态(检查它是否在此持久上下文中创建、更新、删除或清理)?

最佳答案

JPA 没有定义这样的功能。但您可以使用 Hibernate 调用来完成此操作:

final org.hibernate.engine.spi.SessionImplementor session = em.unwrap( org.hibernate.engine.spi.SessionImplementor.class );
final org.hibernate.engine.spi.PersistenceContext pc = session.getPersistenceContext();
final Map.Entry<Object,org.hibernate.engine.spi.EntityEntry>[] entityEntries = pc.reentrantSafeEntityEntries();

entityEntries这是一个 Map.Entry 实例数组,其“键”是实体本身,其值是 org.hibernate.engine.spi.EntityEntry 的实例描述有关实体的各种信息,包括 EntityEntry.getStatus() 等信息。

关于hibernate - 获取持久化上下文中托管实体实例的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20596912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com