Hibernate会话createSQLQuery

时间:2013-06-23 18:18:15

标签: java database hibernate

我编写的函数表klienci将与同一个表连接。我检查了sqlDeveloper中的语句,它返回正确的值,但是这里我从第一个表中得到两个值而另一个没有(变量klient1和klient2具有相同的值)。没有外键。也许有人看到我做错了什么?

public List<Klienci[]> getAllKlienci() {

    Session session = HibernateUtil.getSessionFactory().openSession();
    Query query = session.createSQLQuery("select k1.id, k1.nr_klienta,"
            + " k1.nr_klienta_niekod, k1.nazwa_klienta, k2.id,"
            + " k2.nr_klienta, k2.nr_klienta_niekod, k2.nazwa_klienta"
            + " from klienci k1 "
            + "left join klienci k2 on k1.nr_klienta_niekod = k2.nr_klienta");


    List<Object[]> klienci = query.list();
    // Transformacja w List<Klienci[]> 

    List<Klienci[]> returnList = new ArrayList<>();

    for (Object[] klient : klienci) {
        Klienci[] retunArray = new Klienci[2];

        Klienci klient1 = new Klienci();

        klient1.setId( ((BigDecimal)klient[0]).longValue() );
        klient1.setNrKlienta( ((BigDecimal)klient[1]).longValue() );
        klient1.setNrKlientaNiekod( ((BigDecimal)klient[2]).longValue() );
        klient1.setNazwaKlienta( (String) klient[3] );

        Klienci klient2 = new Klienci();

        klient2.setId( ((BigDecimal)klient[4]).longValue() );
        klient2.setNrKlienta( ((BigDecimal)klient[5]).longValue() );
        klient2.setNrKlientaNiekod( ((BigDecimal)klient[6]).longValue() );
        klient2.setNazwaKlienta( (String) klient[7] );

        retunArray[0] = klient1;
        retunArray[1] = klient2;

        returnList.add(retunArray);

    }

    return returnList;
}

0 个答案:

没有答案