Can I use hibernate query language for entities no

2019-06-16 10:18发布

Following is the mySQL query that I am using to retrieve HolidayPackages for a given Hotel:

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;

I have POJOs with mapping for:

  • HolidayPackage
  • Hotel
  • HotelRoom

I don't have a POJO for HolidayPackageHotel.

Is there any way to use Criteria API or HQL to execute the sql query without creating a POJO for HolidayPackageHotel?

For the curios, DB relations: DB relations

2条回答
不美不萌又怎样
2楼-- · 2019-06-16 10:50

yes, You can use the un-mapped entities inside the HQL.Below is the example what i did in one of my project.

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());  
}
查看更多
forever°为你锁心
3楼-- · 2019-06-16 11:06

No. You can not use the un-mapped entities inside the HQL.

If you want to generate the List of beans from the query you can use the ResultSet transformers, which can convert the query results(object arrays) to beans. By doing this you will save the overhead of creating and filling the POJO beans.

Read here for an example.

查看更多
登录 后发表回答