oracle sql列名无效,Hibernate的无效列名错误createSQLquery

这是我尝试工作的较大查询的较小版本。当我运行查询时,出现以下错误。我尝试删除尽可能多的查询,以尝试找到有罪列,但没有取得任何成功。 我使用Spring 3.2.1,Hibernate的3.6,和Oracle 11gHibernate的无效列名错误createSQLquery

Caused by: java.sql.SQLException: Invalid column name

at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3711)

at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:2763)

at oracle.jdbc.driver.OracleResultSet.getBigDecimal(OracleResultSet.java:368)

at org.hibernate.type.descriptor.sql.DecimalTypeDescriptor$2.doExtract(DecimalTypeDescriptor.java:62)

at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)

查询:

String query = "SELECT d.ID as {d.id}, d.DETAIL_ORDER as {d.detailOrder}, g.ID as {g.id}, g.NAME as {g.name} " +

"FROM EVAL_MASTER_EVAL_DETAIL d " +

"JOIN EVAL_QUESTION_GROUP g ON d.GROUP_ID = g.ID " +

"WHERE d.ACTIVE = 'Y' " +

"AND d.MASTER_EVAL_ID = :evalId" +

" ORDER BY d.DETAIL_ORDER ASC";

details = session.createSQLQuery(query).addEntity("d", EvalMasterEvalDetail.class)

.addEntity("g", EvalQuestionGroup.class).setParameter("evalId", evalId).list();

得到的Hibernate查询:

Hibernate: SELECT d.ID as ID29_0_, d.DETAIL_ORDER as DETAIL5_29_0_, g.ID as ID34_1_, g.NAME as NAME34_1_ FROM EVAL_MASTER_EVAL_DETAIL d JOIN EVAL_QUESTION_GROUP g ON d.GROUP_ID = g.ID WHERE d.ACTIVE = 'Y' AND d.MASTER_EVAL_ID = ? ORDER BY d.DETAIL_ORDER ASC

映射(验证名称)

EVAL_MASTER_EVAL_DETAIL_SEQ

EVAL_QUESTION_GROUP_SEQ

编辑: 尝试了以下,仍然无效列错误。 ACTIVE & d.active是字符串。

String query = "SELECT ACTIVE as {d.active} " +

"FROM EVAL_MASTER_EVAL_DETAIL";

details = session.createSQLQuery(query).addEntity("d", EvalMasterEvalDetail.class).list();

String query = "SELECT d.ID " +

"FROM EVAL_MASTER_EVAL_DETAIL d ";

details = session.createSQLQuery(query).addEntity("d", EvalMasterEvalDetail.class).list();

String query = "SELECT ID " +

"FROM EVAL_MASTER_EVAL_DETAIL";

details = session.createSQLQuery(query).addEntity("d", EvalMasterEvalDetail.class).list();

这工作,但我只得到标量值:

String query = "SELECT ID " +

"FROM EVAL_MASTER_EVAL_DETAIL";

details = session.createSQLQuery(query).list();

+0

您是否尝试过运行查询以返回单个列? –

+0

您在映射中没有'MASTER_EVAL_ID',并且您在'AND d.MASTER_EVAL_ID =:evalId'中使用它,可能是那个,但是不能确定。 –

+0

尝试将生成的SQL直接执行到Oracle。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值