首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hibernate createQuery错误?

hibernate createQuery错误?
EN

Stack Overflow用户
提问于 2011-10-09 04:49:22
回答 1查看 416关注 0票数 0

有什么方法可以删除特定命名查询的缓存吗?我并不是真的想删除所有查询...或者,是否有其他解决方法?

即使我使用普通的查询类,它也不能工作...

我正在使用hibernate 3.6,glassfish 3.1.1,这是一个java ee应用程序(代码来自ejb模块)。

我有这样的东西:

代码语言:javascript
复制
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“又是..空...为什么?

我认为它是缓存模块(因为如果我设置我的提供者为eclipselink,它可以正常工作)……

我正在使用hibernate进行搜索..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-14 04:40:59

使用EclipseLink,您可以执行以下操作:

代码语言:javascript
复制
 Query query = em.createNamedQuery("Users.findByUsername");
 query.setHint("javax.persistence.cache.storeMode", "REFRESH");

对于hibernate,提示是:要进一步阅读和理解,请使用"Override the cache mode for this query (例如CacheMode.REFRESH )“:old article

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7699693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档