您可以轻松编写HQL查询,使用Theta Join(如Adrian所述)将结果作为两个对象返回。这是一个例子:
String queryText = "select address, photo from Address address, Photo photo " + " where address.personID=photo.personId";List<Object[]> rows = session.createQuery(queryText).list();for (Object[] row: rows) { System.out.println(" ------- "); System.out.println("Address object: " + row[0]); System.out.println("Photo object: " + row[1]);}如您所见,查询返回Object []数组的列表,这些数组代表每个提取的行。此数组的第一个元素将包含一个对象,第二个元素-另一个。
编辑:
在左连接的情况下,我认为您需要使用本机SQL查询(而不是HQL查询)。您可以在这里执行以下操作:
String queryText = "select address.*, photo.* from ADDRESS address left join PHOTO photo on (address.person_id=photo.person_id)";List<Object[]> rows = sess.createSQLQuery(queryText) .addEntity("address", Address.class) .addEntity("photo", Photo.class) .list();这应该适合您的情况。



