我有一个与之关联的状态表的实体。状态表由另一个进程管理,并包含我的业务逻辑必须处理的对象列表。我希望每次重新加载实体时都能获得状态表的新快照。如何确保Hibernate的任何部分或其支持库永远不会缓存此表的任何值?基本上,我希望获得一个新的视图集合我每次调用getMyStateValues()。
答案 0 :(得分:1)
Hibernate的大部分要点是防止这种情况发生,并在给定事务的范围内返回实体状态的一致视图。因此要么每次都在不同的事务中重新加载整个实体。或者,如果您需要在业务事务期间重新加载状态表,请在单独的Hibernate会话中仅通过父实体的id加载状态表。
答案 1 :(得分:0)
您可以在实体中创建查询数据库并返回集合的方法。 getXYXReload()。想到这不是一个非常好的设计决定。
答案 2 :(得分:0)
您可以使用Hibernate的CacheMode。它允许您指示如何与缓存交互的休眠会话。您可以通过以下方式访问基础会话:
@PersistenceContext EntityManager manager;
...
org.hibernate.Session session = (Session)manager.getDelegate();
不幸的是,这种技术适用于整个会话,而不是专门针对实体。