我不想在Play中使用hibernate缓存

时间:2011-07-19 13:27:03

标签: hibernate jquery-ui selenium playframework

我正在使用Play开发一个非常简单的应用程序,其中包含一个jQuery UI自动完成功能。此自动完成功能向服务器发送ajax请求并返回id / values(使用Peter Hilton提供的代码段)。

我遇到了Selenium测试重新加载的问题: - 当我在测试模式下启动我的应用程序(播放测试)时,它会在内存db中加载id /值(通过引导程序功能) - 当我启动我的硒测试时,它会删除数据并使用相同的值加载测试数据,但是使用新的ID(这对我来说似乎很正常) - 当测试运行时,自动完成会返回旧的id /值而不是新的id /值,并且我得到“找不到id nn的对象”=>旧的值似乎被加载到服务器缓存中,但是当Play文档解释它时,它不应该......

我检查过我使用的是@javax.persistence.Entity而不是hibernate @Entity

我还检查了我的application.conf,看起来很正常:

%test.application.mode=dev
%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
%test.jpa.ddl=create-drop
%test.mail.smtp=mock

请帮助......

2 个答案:

答案 0 :(得分:0)

JPA使用Hibernate,因此使用哪个Annotation无关紧要。但我不认为这是一个hiberante问题,因为每个请求都应该得到一个新的Hibernate-Session。因此,使用log-statements分析代码,以确保它是一个休眠问题。

答案 1 :(得分:0)

默认情况下,Hibernate只使用会话(这不是Http Session)缓存,这基本上与请求的持续时间一样长,参见http://community.jboss.org/wiki/SessionsAndTransactions

所以我不相信你给出的问题是Hibernate,除非你配置了二级缓存并在你的实体上使用@Cache。

这可能是由于浏览器缓存这么简单。尝试删除浏览器缓存。