有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java休眠错误:HH000091

我刚开始冬眠。我的目标是将查询结果获取到ArrayList,但我一直得到错误:hh000091:预期类型:int,实际值:org。冬眠收集内部的持久集

我坚信问题出在我的地图上,任何帮助都将不胜感激

错误

ERROR: HHH000123: IllegalArgumentException in class: com.mycompany.mavenproject1.Medicamento, setter method of property: labJoin Apr 07, 2017 10:23:10 AM org.hibernate.property.BasicPropertyAccessor$BasicSetter set ERROR: HHH000091: Expected type: int, actual value: org.hibernate.collection.internal.PersistentSet

我的HQL查询:

from Medicamento as m left join from Laboratorio as l where l.codigoLab=m.codigoLab

映射XML:

<class name="com.mycompany.mavenproject1.Medicamento" table="MEDICAMENTO" schema="ADMINFARMACIA" optimistic-lock="version">
  <id name="codigoMed" type="long">
            <column name="CODIGO_MED" not-null="true"/>
            <generator class="assigned" />
        </id>
        <property name="nombreComercial" type="string">
            <column name="NOMBRE_COMERCIAL" length="100" not-null="true" />
        </property>
        <property name="codigoPrincipio" type="string">
            <column name="CODIGO_PRINCIPIO" length="50" not-null="true" />
        </property>
        <property name="stockMinimo" type="java.lang.Integer">
            <column name="STOCK_MINIMO" />
        </property>
        <property name="codigoLab" type="java.lang.Integer">
            <column name="CODIGO_LAB"  />
        </property>
        <property name="comentario" type="string">
            <column name="COMENTARIO" length="1000" />
        </property>
        <property name="existencias" type="java.lang.Integer">
            <column name="EXISTENCIAS"/>
        </property>
        <set name="labJoin"  fetch="join">          
            <key column="CODIGO_LAB" />
            <one-to-many class="com.mycompany.mavenproject1.Laboratorio"/>
        </set>
</class>

实验室。爪哇:

public class Laboratorio implements java.io.Serializable{
    private int codigoLab;
    private String nombreLab;

    public Laboratorio(){

    }

    public int getCodigoLab() {
        return codigoLab;
    }

    public void setCodigoLab(int codigoLab) {
        this.codigoLab = codigoLab;
    }

    public String getNombreLab() {
        return nombreLab;
    }

    public void setNombreLab(String nombreLab) {
        this.nombreLab = nombreLab;
    }    
}

药物。java—在这一个表中,labJoin和labName是“Laboratorio”表中的字段

public class Medicamento implements java.io.Serializable{
private Long codigoMed;
private String nombreComercial;
private String codigoPrincipio;
private int stockMinimo;
private int codigoLab;
private String comentario;
private int existencias;
private int labJoin;
private String labName;

public Medicamento(){

}
public Long getCodigoMed() {
    return codigoMed;
}

public void setCodigoMed(Long codigoMed) {
    this.codigoMed = codigoMed;
}

public String getNombreComercial() {
    return nombreComercial;
}

public void setNombreComercial(String nombreComercial) {
    this.nombreComercial = nombreComercial;
}

public String getCodigoPrincipio() {
    return codigoPrincipio;
}

public void setCodigoPrincipio(String codigoPrincipio) {
    this.codigoPrincipio = codigoPrincipio;
}

public int getStockMinimo() {
    return stockMinimo;
}

public void setStockMinimo(int stockMinimo) {
    this.stockMinimo = stockMinimo;
}

public int getCodigoLab() {
    return codigoLab;
}

public void setCodigoLab(int codigoLab) {
    this.codigoLab = codigoLab;
}

public int getLabJoin() {
    return labJoin;
}

public void setLabJoin(int labJoin) {
    this.labJoin = labJoin;
}

public String getLabName() {
    return labName;
}

public void setLabJoin(String labName) {
    this.labName= labName;
}

public String getComentario() {
    return comentario;
}

public void setComentario(String comentario) {
    this.comentario = comentario;
}

public int getExistencias() {
    return existencias;
}

public void setExistencias(int existencias) {
    this.existencias = existencias;
}

}

调用方法

private void displayResult(List rl){
            ArrayList<Object> oneRow = new ArrayList<Object>();
            for (Object o: rl){
                Medicamento medList = (Medicamento)o;
                System.out.println(labList.getCodigoLab());
                oneRow.add(medList.getCodigoMed());
                oneRow.add(medList.getExistencias());
                oneRow.add(medList.getNombreComercial());
                oneRow.add(medList.getLabJoin());
            }
            LowStockTableModel model = new LowStockTableModel(oneRow);
            try{
                jTable1.setModel(model);
            }
            catch (Exception e){
                JOptionPane.showMessageDialog(null, e.getLocalizedMessage(),"Error",JOptionPane.ERROR_MESSAGE);
                jTextField1.setText("");
            }
        }

共 (1) 个答案

  1. # 1 楼答案

    在您的映射中,您有

    <set name="labJoin"  fetch="join">          
            <key column="CODIGO_LAB" />
            <one-to-many class="com.mycompany.mavenproject1.Laboratorio"/>
        </set>
    

    但是属性labJoin具有类型int。此属性的类型必须为Set<Laboratorio>