Hibernate 更新某个值
Posted
技术标签:
【中文标题】Hibernate 更新某个值【英文标题】:Hibernate update a certain value 【发布时间】:2014-07-23 09:13:16 【问题描述】:我编写了一个方法,如果它具有特定标识符,则选择或更新一个值:
@Transactional
public List<Settings> getSettingsByParameter(String identifier) throws Exception
log.info("get resultsList by " + identifier);
if(identifier.isEmpty())
throw new Exception("Identifier is empty!");
if(identifier == "today")
//update today field
String query = "UPDATE settings SET value=TODAY() where identifier = '" + identifier + "'";
em.merge(em.createQuery(query, Settings.class).getSingleResult());
String query = "SELECT p FROM Settings p WHERE identifier = '" + identifier + "'";
List<Settings> resultList = em.createQuery(query, Settings.class).getResultList();
return resultList;
但是,我遇到了一个异常:
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: settings is not mapped [UPDATE settings SET value=TODAY() where identifier = 'today']
为什么以及如何使用 hibernate 和 hsqldb?
非常感谢您的回答!
【问题讨论】:
只是好奇。if(identifier == "today")
这种情况适合你吗?
@sᴜʀᴇsʜᴀᴛᴛᴀ 是的,这对我有用。它基本上来自服务并注入到我的 dao 中。但是,hibernate 无法使用我的查询更新它。
【参考方案1】:
Hibernate 对类名区分大小写。尝试在 Settings 类中使用大写的 S:
String query = "UPDATE Settings SET value=TODAY() where identifier = '" + identifier + "'";
【讨论】:
以上是关于Hibernate 更新某个值的主要内容,如果未能解决你的问题,请参考以下文章
当为 Postgres DB 的属性 spring.jpa.hibernate.ddl-auto 提供更新值时,Hibernate 不会生成序列