运行JPQL update语句时,Hibernate二级缓存是否失效

运行JPQL update语句时,Hibernate二级缓存是否失效,hibernate,second-level-cache,Hibernate,Second Level Cache,运行JPQL更新或删除查询时,Hibernate是否足够智能,可以使已更改实体的二级缓存失效 人为的例子: 您拥有JPQL: update Product p set p.status = 'S' where p.name like 'Monitor%' 如果在运行该语句时,当前在二级缓存中有产品,则Hibernate会使缓存中的所有产品无效,还是对缓存不做任何操作,并且二级缓存中的产品现在无效 仅供参考。。。我正在使用JBoss 5.1和Hibernate以及JBossCache,在运行了我

运行JPQL更新或删除查询时,Hibernate是否足够智能,可以使已更改实体的二级缓存失效

人为的例子:

您拥有JPQL:

update Product p set p.status = 'S' where p.name like 'Monitor%'
如果在运行该语句时,当前在二级缓存中有产品,则Hibernate会使缓存中的所有产品无效,还是对缓存不做任何操作,并且二级缓存中的产品现在无效


仅供参考。。。我正在使用JBoss 5.1和Hibernate以及JBossCache,在运行了我自己的测试之后,它似乎会使整个二级缓存失效,而不仅仅是更新中涉及的任何实体的二级缓存失效。

。我认为您可以检查-set showSql=true(或者如果不使用JPA,即用于在控制台上显示sql输出的hibernate属性),并查看hibernate是否再次从数据库中获取刚刚用hql更新的实体。这只会告诉您它是否将这些项重新加载到缓存中,我不认为它会这样做。它不会告诉您的是,如果它使缓存无效,那么该实体的所有实例都必须从数据库中重新加载。我想我只需要做个测试,然后找出答案。我希望这里有人能快速回答。