【问题标题】:"Not mapped" exception while updating the table in Hibernate在 Hibernate 中更新表时出现“未映射”异常
【发布时间】:2016-12-17 19:18:11
【问题描述】:

我是 Hibernate 的新手,我正在尝试像下面那样更新表格列,但它给出了一个异常 - 表格不是映射异常。

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlUpdate = "UPDATE TEST_TABLE SET LAST_REFRESH_DATE = :dateToday";
Query query = session.createQuery(hqlUpdate);
query.setParameter("dateToday", new UtilityDate().getTodayDate());
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);

例外

严重:servlet [springmvc] 的 Servlet.service() 在带有路径的上下文中 [/TEST] 抛出异常 [请求处理失败;嵌套异常 是 org.hibernate.hql.ast.QuerySyntaxException: TEST_TABLE 不是 映射 [UPDATE TEST_TABLE SET LAST_REFRESH_DATE = :dateToday]] 与 根本原因 org.hibernate.hql.ast.QuerySyntaxException: TEST_TABLE 是 未映射 [UPDATE TEST_TABLE SET LAST_REFRESH_DATE = :dateToday] 在 org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181) 在 org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110) 在 org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:94)

我已经在 Stack Overflow 中验证了所有相关问题。

【问题讨论】:

标签: java spring hibernate


【解决方案1】:

在定义表映射后,在休眠中,我们总是根据对象和类与系统进行通信。根据您发布的 sn-p,您似乎在 HQL 中使用了数据库表名及其列名,这是错误的。而不是这个,您需要指定映射表类名称及其属性名称来代替表列名称。

如果表 TEST_TABLE 映射到 Java 类 TestTable 并且 lastRefreshDate 是映射到 LAST_REFRESH_DATE 列的此类的属性,那么下面应该是代码。

    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    String hqlUpdate = "UPDATE TestTable SET lastRefreshDate = :dateToday";
    Query query = session.createQuery(hqlUpdate);
    query.setParameter("dateToday", new UtilityDate().getTodayDate());
    int result = query.executeUpdate();
    System.out.println("Rows affected: " + result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 2018-02-24
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多