Hibernate Class Cast Exception

Beim Versuch, die Ergebnismenge in die Zuordnungsklasse umzuwandeln, wird eine Klassenumwandlungsausnahme mit Ruhezustand angezeigt. Die zurückgegebenen Daten in der Ergebnismenge werden angezeigt. Sie werden jedoch als Object [] und zurückgegeben Ich kann das Objekt [] auf eine Liste setzen ... Mache ich meine Zuordnungen für den Ruhezustand richtig? Ich erhalte die korrekten Daten von der Abfrage zurück, aber die Zuordnung ist nicht korrekt ...

Kartierung

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.ibm.db2.jcc.DB2Driver</property>
        <property name="hibernate.connection.url">jdbc:db2://****</property>
        <property name="hibernate.connection.username">*****</property>
        <property name="hibernate.connection.password">*****</property>
        <property name="hibernate.connection.pool_size">1</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">NONE</property>
        <property name="dialect">org.hibernate.dialect.DB2Dialect</property>
        <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="hibernate.current_session_context_class">thread</property>
        <mapping package="db2"/>
        <mapping class="db2.EQP_UT"/>
        <mapping class="db2.EQP_COMP_PRIMARY"/>
    </session-factory>
</hibernate-configuration>

Zugeordnete Klasse

@Entity
@Table(name = "EQP_UT")
public class EQP_UT implements Serializable {

    @Id
    private String INITIAL;

    @Id
    private String NUMBER;
    private Integer AXL_CNT;
    private String EQP_TYP_CD;
    private String EIN;
    private Integer TRUK_CNT;

    @OneToOne
    @JoinTable(name = "EQP_COMP_PRIMARY",
        joinColumns = {@JoinColumn(name = "INITIAL"), @JoinColumn(name = "NUMBER")},
         inverseJoinColumns = {
            @JoinColumn(name = "INITIAL"), @JoinColumn(name="NUMBER")
            }  
    )
    public EQP_COMP_PRIMARY eqp_comp;

    public EQP_UT(){
        this.INITIAL = "";
        this.NUMBER = " ";
        int a = this.retrieve();
        System.out.println("This is the data is here..." + a);
    }

    public String getNumber()
    {
        return NUMBER;
    }

    public void setNumber(String num)
    {
        this.NUMBER = num;
    }

    public String getInitial()
    {
        return INITIAL;
    }

    public void setInitial(String init)
    {
        this.INITIAL = init;
    }

    public int retrieve()
    {
        Session session = null;
        Transaction transaction = null;

        try{
            session = HibernateUtil.getDB2SessionFactory().getCurrentSession();
            transaction = session.beginTransaction();

            String init = "AARE";
            String number = String.format("%010d", 9350);
            Integer num = Integer.parseInt(number);

            String queryString = "SELECT A.INITIAL, A.NUMBER, " + 
                    "A.TRUK_CNT, A.EQP_TYP_CD, A.AXL_CNT, " +
                    "B.TRUK_AXL_CNT, A.EIN FROM EQP_UT AS A " +
                    "LEFT JOIN A.eqp_comp AS B " +
                    "WHERE A.INITIAL||A.NUMBER IN (:carList) AND A.INITIAL IN (:initList) AND A.NUMBER IN (:numberList) " + 
                    "AND B.TRUK_AXL_CNT > 0";

            Query query = session.createQuery(queryString);
            query.setParameterList("carList", Globals.returnCarList());
            query.setParameterList("initList", Globals.returnCarListCarInits());
            query.setParameterList("numberList", Globals.returnCarListCarNumbers());

            @SuppressWarnings("unchecked")
            List obj =  query.list();

            System.err.println("CLASS NAME IS " + obj.get(0).getClass().getClass().getName());

            Globals.eqpList = obj; //Globals.eqpList is List<EQP_UT>

            session.getTransaction().commit(); 

            return 10;      
        }
        catch(HibernateException ex)
        {
            ex.printStackTrace();
            transaction.rollback();

        }
        catch(Exception ex)
        {
            System.err.println(ex.getMessage());
        }

        return -1;  
    }   
}

Mitglied der Klasse

@Entity
@Table(name = "EQP_COMP_PRIMARY")
public class EQP_COMP_PRIMARY implements Serializable{

        private Integer TRUK_AXL_CNT;

        @Id
        private String INITIAL;
        @Id
        private String NUMBER;
}

Main

//tons more code...
for(int i = 0; i < Globals.eqpList.size(); i++)
{
     EQP_UT e = Globals.eqpList.get(i); //class cast exception - and Globals.eqpList is List<EQP_UT>
}
//tons more code...

Antworten auf die Frage(1)

Ihre Antwort auf die Frage