我正在使用 EJB 和 JBoss 调用 sql-query name = "getResVigProd" 时,会出现以下错误:
2013-11-13 16:33:10,773 INFO [org.hibernate.type.IntegerType] could not read column value from result set: cod1_213_0_; Invalid column name cod1_213_0_.
2013-11-13 16:33:10,773 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: 07009
2013-11-13 16:33:10,773 ERROR [org.hibernate.util.JDBCExceptionReporter] Invalid column name cod1_213_0_.
2013-11-13 16:33:10,804 INFO [ar.com.acg.web.CarteraVigenteAction] javax.ejb.EJBTransactionRolledbackException: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
我的 hbm.xml 代码是这样的:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="ar.com.acg.model.ResumenVigente" table="resumen_vigentes" mutable="false">
<id name="codigo_proponente" type="int" column="cod_proponente" />
<property name="codigo_productor" type="int" column="Codigo_Productor" />
<property name="codigo_organizador" type="int" column="cod_organizador" />
<property name="nombre_proponente" type="string" column="nombre_proponente" />
<property name="nombre_productor" type="string" column="Nombre_Productor" />
<property name="nombre_organizador" type="string" column="nombre_organizador" />
</class>
<resultset name="comboProdResVig">
<return class="ar.com.acg.model.ResumenVigente" alias="ResumenVigente" >
<return-property name="codigo_productor" column="Codigo_Productor"/>
<return-property name="nombre_productor" column="Nombre_Productor"/>
</return>
</resultset>
<sql-query name="getResVigProd" callable="true" resultset-ref="comboProdResVig">
exec wp_s_resumen_vigentes 'Productor_x_Organizador', :productor.codigo
</sql-query>
</hibernate-mapping>
“ResumenVigente.java”是这样的:
package ar.com.acg.model;
import java.io.Serializable;
public class ResumenVigente implements Serializable {
private static final long serialVersionUID = -2464310639769273442L;
private Integer codigo_proponente;
private Integer codigo_productor;
private Integer codigo_organizador;
private String nombre_proponente;
private String nombre_productor;
private String nombre_organizador;
public Integer getCodigo_organizador() {
return codigo_organizador;
}
public void setCodigo_organizador(Integer codigo_organizador) {
this.codigo_organizador = codigo_organizador;
}
public Integer getCodigo_productor() {
return codigo_productor;
}
public void setCodigo_productor(Integer codigo_productor) {
this.codigo_productor = codigo_productor;
}
public Integer getCodigo_proponente() {
return codigo_proponente;
}
public void setCodigo_proponente(Integer codigo_proponente) {
this.codigo_proponente = codigo_proponente;
}
public String getNombre_organizador() {
return nombre_organizador;
}
public void setNombre_organizador(String nombre_organizador) {
this.nombre_organizador = nombre_organizador;
}
public String getNombre_productor() {
return nombre_productor;
}
public void setNombre_productor(String nombre_productor) {
this.nombre_productor = nombre_productor;
}
public String getNombre_proponente() {
return nombre_proponente;
}
public void setNombre_proponente(String nombre_proponente) {
this.nombre_proponente = nombre_proponente;
}
}
存储过程的查询是这样的:
if @tipo="Productor_x_Organizador"
select distinct cod_productor as Codigo_Productor, nombre_productor as Nombre_Productor
from resumen_vigentes
where cod_organizador = @codigo
谁能告诉我出了什么问题?谢谢!