gpt4 book ai didi

java - Spring-Hibernate 应用程序中的无效列名异常

转载 作者:行者123 更新时间:2023-12-01 06:11:28 26 4
gpt4 key购买 nike

我正在开发一个使用 Oracle 11G 数据库的 Spring Hibernate 应用程序。我有一个表,我想从中选择三列并将其显示在 jsp 页面中。现在,其中一列的数据格式为 - abc+def+xyz。我必须在 jsp 页面的 3 个不同列中显示“abc”、“def”和“xyz”。为此,我在 DAO 中编写了以下查询:

SQLQuery query=sessionFactory.getCurrentSession().createSQLQuery("SELECT TABLE_ID, REGEXP_SUBSTR(TABLE_UID, '[^+]+', 1, 3) AS FIRST_COLUMN, REGEXP_SUBSTR(TABLE_UID, '[^+]+', 1, 2) AS SECOND_COLUMN, REGEXP_SUBSTR(TABLE_UID, '[^+]+', 1, 1) AS THIRD_COLUMN, USERID FROM TABLE_TABLE1 WHERE USERID='abhi'");

我的列的名称是 - TABLE_ID、TABLE_UID、USERID,我的表的名称是 - TABLE_TABLE1。当我运行这个时,我得到 -

org.hibernate.exception.GenericJDBCException: could not execute query] with root cause
java.sql.SQLException: Invalid column name.

但是在 SQL 中执行相同的查询时,会给出预期的输出。我不明白为什么会出现这种差异

最佳答案

我怀疑 [ 或 ] 字符造成了问题(不确定)。相反,您可以尝试使用占位符

String queryString= "SELECT TABLE_ID, REGEXP_SUBSTR(TABLE_UID, ?, 1, 3) AS FIRST_COLUMN, REGEXP_SUBSTR(TABLE_UID, ?, 1, 2) AS SECOND_COLUMN, REGEXP_SUBSTR(TABLE_UID, ?, 1, 1) AS THIRD_COLUMN, USERID FROM TABLE_TABLE1 WHERE USERID= ?";
SQLQuery query = getSession().createSQLQuery(queryString);
query.setString(0, "[^+]+");
query.setString(1, "[^+]+");
query.setString(2, "[^+]+");
query.setString(3, "abhi");

关于java - Spring-Hibernate 应用程序中的无效列名异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33908874/

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