gpt4 book ai didi

java - hibernate createQuery错误?

转载 作者:行者123 更新时间:2023-12-01 15:43:02 26 4
gpt4 key购买 nike

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

即使我使用普通的 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 进行搜索..

最佳答案

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

 Query query = em.createNamedQuery("Users.findByUsername");
query.setHint("javax.persistence.cache.storeMode", "REFRESH");

对于 hibernate ,提示是: org.hibernate.cacheMode“覆盖此查询的缓存模式(例如CacheMode.REFRESH)”如需进一步阅读和理解:old article

关于java - hibernate createQuery错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7699693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com