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:
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.
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());
}