以下是我用来检索HolidayPackages for a given Hotel
的mySQL查询:
SELECT
pkg.idHolidayPackage, pkg.name
FROM
holidaypackage pkg
INNER JOIN
holidaypackagehotel hph ON pkg.idHolidayPackage = hph.idHolidayPackage
INNER JOIN
hotelroom hr ON hr.idHotelRoom = hph.idHotelRoom
WHERE
hr.idHotel = 1;
我有POJO的映射:
我没有HolidayPackageHotel
的POJO。
有没有办法使用Criteria API或HQL来执行sql查询而不为HolidayPackageHotel创建POJO?
对于古玩,数据库关系:
答案 0 :(得分:3)
没有。 您无法在HQL中使用未映射的实体。
如果要从查询生成Bean列表,可以使用 ResultSet转换器,它可以将查询结果(对象数组)转换为bean 。通过这样做,您将节省创建和填充POJO bean的开销。
阅读here以获取示例。
答案 1 :(得分:-3)
是的,你可以在HQL中使用未映射的实体.Below就是我在我的一个项目中所做的例子。
List list = session.createQuery("select p, a from UserAccount p, Channels a " + "where p.uid = a.uid").list();
Iterator iter = list.iterator();
while (iter.hasNext())
{
Object[] objArray = (Object[]) iter.next();
UserAccount p = (UserAccount) objArray[0];
Channels a = (Channels) objArray[1];
System.out.println(p.getUsername());
System.out.println(a.getTitle());
}