休眠createQuery错误?
有什么方法可以删除特定命名查询的缓存吗?我真的不想删除所有查询...或者还有其他解决方法吗?
即使我使用普通的 Query 类,它也不起作用...
我正在使用 hibernate 3.6、glassfish 3.1.1,这是一个 java ee 应用程序(来自 ejb 模块的代码)
我有这样的东西:
public User getUserByName(String username) {
try {
return (User) em.createNamedQuery("User.getUserByName").setParameter("username", username).getSingleResult();
} catch (NoResultException e) {
return null;
}
}
//...
if(getUserByName(entity.getUsername()!=null) {
em.persist(entity);
}
//...
// username added in database (checked)
if(getUserByName(entity.getUsername())==null) {
//something else
}
我第二次使用“getUserByName”又是.. null...为什么?
我认为这是缓存模块(因为如果我将提供程序设置为 eclipselink,它就会正常工作)...
我正在使用 hibernate 进行搜索。
Is any way to remove cache for a specific named query? I don't really want to remove for all queries... Or is there any other workaround?
It is not working even if I am using the normal Query class...
I am using hibernate 3.6, glassfish 3.1.1, this is an java ee application (code from ejb module)
I have something like this:
public User getUserByName(String username) {
try {
return (User) em.createNamedQuery("User.getUserByName").setParameter("username", username).getSingleResult();
} catch (NoResultException e) {
return null;
}
}
//...
if(getUserByName(entity.getUsername()!=null) {
em.persist(entity);
}
//...
// username added in database (checked)
if(getUserByName(entity.getUsername())==null) {
//something else
}
the second time I use "getUserByName" is again.. null... why?
I am thinking it's the cache module(because if I set my provider to eclipselink it's working as it should)...
I am using hibernate for it's search..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 EclipseLink,您可以执行以下操作:
对于休眠,提示是:
org.hibernate.cacheMode
“覆盖此查询的缓存模式(例如CacheMode.REFRESH)”如需进一步阅读和理解:旧文章
With EclipseLink you can do this:
For hibernate the hint is:
org.hibernate.cacheMode
"Override the cache mode for this query ( eg. CacheMode.REFRESH )"For further reading and understanding: old article