我写了表 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;
}