【问题标题】:Hibernate : Column count doesn't match value count at row 1休眠:列计数与第 1 行的值计数不匹配
【发布时间】:2017-07-28 10:34:28
【问题描述】:

我正在使用 Hibernate 5 和 Spring 4。执行以下 SQL 查询并出现错误

原因:java.sql.SQLException:列数与值不匹配 在第 1 行计数

SQLQuery query = getSessionFactory().getCurrentSession().createSQLQuery(" update irms_deleted_data SET reason=:reasonStr WHERE  irms_id=:id ");
        query.setString("reasonStr", "ABCD1234");
        query.setInteger("id", irmsData.getId());
        query.executeUpdate();

知道为什么我会收到此错误吗?

【问题讨论】:

  • 发布的代码看起来不错
  • createSqlQuery 不创建本机查询,所以您必须在字符串字段中使用引号?像这样:... set reason = ':reasonStr'...
  • 嗨帕特里克,不,我们不必在周围加上引号:reasonStr
  • 请检查你没有做类似stackoverflow.com/questions/5931900/…的事情

标签: java mysql spring hibernate database-administration


【解决方案1】:

我尝试了以下(简单的休眠示例)

创建表irms_deleted_data(原因varchar2(10), irms_id number(11,0)); 插入 IRMS_DELETED_DATA 值 ('xyz', 1);

写了一个函数:

private void updateirmsDeletedData() {
Transaction tx = null;
Session session = factory.openSession();
try {
tx = session.beginTransaction();
SQLQuery query = session.createSQLQuery("update irms_deleted_data SET reason=:reasonStr WHERE  irms_id=:id");
query.setString("reasonStr", "ABCD1234");
query.setInteger("id", 1);
query.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
tx.commit();
session.close();
}

而且成功了....

您还可以检查 irms_deleted_data 上是否有触发器正在执行导致问题的操作...

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 2020-01-10
    • 2014-01-17
    • 2019-09-18
    • 2016-12-10
    • 2013-04-24
    相关资源
    最近更新 更多