有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate更新某个值

我编写了一个方法,该方法选择或更新具有特定标识符的值:

@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实现这一点

我真的很感激你的回答


共 (1) 个答案

  1. # 1 楼答案

    Hibernate对类名区分大小写。使用设置类的Capital S进行尝试:

    String query = "UPDATE Settings SET value=TODAY() where identifier = '" + identifier + "'";