Java 休眠-无法从表中读取值

Java 休眠-无法从表中读取值,java,sql,hibernate,jakarta-ee,Java,Sql,Hibernate,Jakarta Ee,无法通过hibernate从表中读取数据。但相同的SQL在TOAD中工作。 SQL: 表def: CREATE TABLE "PUBSH" ( KEY decimal(22) NOT NULL, PROD varchar2(54) NOT NULL, PRODKEY decimal(22), PROD_DESC varchar2(360), PARTEY decimal(22) NOT NULL, LIST_TYPE varchar2(90), PUBL

无法通过hibernate从表中读取数据。但相同的SQL在TOAD中工作。

SQL:

表def:

CREATE TABLE "PUBSH"
(
   KEY decimal(22) NOT NULL,
   PROD varchar2(54) NOT NULL,
   PRODKEY decimal(22),
   PROD_DESC varchar2(360),
   PARTEY decimal(22) NOT NULL,
   LIST_TYPE varchar2(90),
   PUBLISH_DATE date,
   PUBSH_PERIOD varchar2(30) NOT NULL,
   PL_KEY decimal(22),
   LIST varchar2(750),
   EL_KEY decimal(22),
   NEL varchar2(60) }
控制台中的错误:

    org.hibernate.SQL - SELECT distinct pub.nel, pub.list, pub.prod, pub.prod_desc  FROM  PUBSH WHERE pub.prod in ('12345')
        org.hibernate.jdbc.AbstractBatcher - about to open ResultSet (open ResultSets: 0, globally: 0)
             org.hibernate.type.StringType - could not read column value from result set; Invalid column name
        org.hibernate.jdbc.AbstractBatcher - about to close ResultSet (open ResultSets: 1, globally: 1)
        org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
  org.hibernate.util.JDBCExceptionReporter - could not execute query [SELECT distinct pub.nel, pub.list, pub.prodr, pub.desc  FROM  PUBSH WHERE pub.prod in ('12345')]
    java.sql.SQLException: Invalid column name
            at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3711)
            at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:2806)
            at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:498)
            at weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.getString(Unknown Source)
            at org.hibernate.type.StringType.get(StringType.java:18)
            at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
            at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:189)
            at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.extract(CustomLoader.java:474)
            at org.hibernate.loader.custom.CustomLoader$ResultRowProcessor.buildResultRow(CustomLoader.java:420)
            at org.hibernate.loader.custom.CustomLoader.getResultColumnOrRow(CustomLoader.java:317)
            at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:606)
要执行Hibernate的DAO方法:

public List<SearchResult> find(final String Query1) {  
       return (List<SearchResult>)getHibernateTemplate().execute(new HibernateCallback(){
         public Object doInHibernate(Session session) throws HibernateException{
           Query query1 =  session.createSQLQuery(channelQuery1)
                                   .addScalar("nel",Hibernate.STRING)
                                   .addScalar("price",Hibernate.STRING)
                                   .addScalar("prodr",Hibernate.STRING)
                                   .addScalar("prodcr",Hibernate.STRING)
                                   .setResultTransformer(Transformers.aliasToBean(SearchResult.class));

               return query1.list();
             }
公共列表查找(最终字符串查询1){
return(List)getHibernateTemplate().execute(new HibernateCallback()){
公共对象doInHibernate(会话会话)引发HibernateeException{
Query query1=session.createSQLQuery(channelQuery1)
.addScalar(“nel”,Hibernate.STRING)
.addScalar(“price”,Hibernate.STRING)
.addScalar(“prodr”,Hibernate.STRING)
.addScalar(“prodcr”,Hibernate.STRING)
.setResultTransformer(Transformers.aliasToBean(SearchResult.class));
返回query1.list();
}

请告知为什么通过hibernate访问时出现无效列名错误?

您正在创建SQL查询,但标量属性与表中声明的不同:

.addScalar("prodNbr",Hibernate.STRING)
.addScalar("prodDescr",Hibernate.STRING)
这些属性在表中声明为
PROD_NBR
PROD_DESC
,因此将代码更改为

.addScalar("CHANNEL",Hibernate.STRING)
.addScalar("PRICELIST",Hibernate.STRING)
.addScalar("PROD_NBR",Hibernate.STRING)
.addScalar("PROD_DESC",Hibernate.STRING)

Query1的值是多少?同时激活sql查询日志并查看hibernate正在执行的查询Query1没有执行,我在执行hibernate时出错,问题部分更新了sql日志。请不要以这种方式删除问题的内容,因为这会使答案看起来不相关。我看不到任何删除内容当你张贴时,你同意了CC-WiKi许可证的内容。不,请删除这个问题。我已经张贴了实际的表和字段列表。你能考虑请求并删除问题吗?@ USE2444,没有关于你的问题的任何自信的信息,可以被另一个人使用。
.addScalar("CHANNEL",Hibernate.STRING)
.addScalar("PRICELIST",Hibernate.STRING)
.addScalar("PROD_NBR",Hibernate.STRING)
.addScalar("PROD_DESC",Hibernate.STRING)