Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否可以对未映射到表的实体使用hibernate查询语言?_Mysql_Sql_Hibernate_Orm_Hql - Fatal编程技术网

Mysql 是否可以对未映射到表的实体使用hibernate查询语言?

Mysql 是否可以对未映射到表的实体使用hibernate查询语言?,mysql,sql,hibernate,orm,hql,Mysql,Sql,Hibernate,Orm,Hql,下面是我用来检索给定酒店的度假套餐的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 = hp

下面是我用来检索给定酒店的度假套餐的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,具有以下映射:

  • 度假套餐
  • 酒店
  • 酒店房间
我没有度假套餐酒店的POJO

是否有任何方法可以使用CriteriaAPI或HQL执行sql查询,而无需为HolidayPackageHotel创建POJO

对于古玩,DB关系:

否。您不能在HQL中使用未映射的实体

如果要从查询生成bean列表,可以使用结果集转换器,它可以将查询结果(对象数组)转换为bean。通过这样做,您将节省创建和填充POJO bean的开销


阅读示例。

是的,您可以在HQL中使用未映射的实体。下面是我在一个项目中所做的示例

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

我使用了以下命名请求:@namedNAVIQUERY(name=“getHolidayPackageForHotel”,query=“SELECT*FROM wah_schema.holidaypackage pkg INNER JOIN wah_schema.holidaypackagehotel hph ON pkg.idHolidayPackage=hph.idHolidayPackage INNER JOIN wah_schema.hotelroom hr ON hr.idHotelRoom=hph.idHotelRoom其中hr.idHotel=:idHotel”,resultClass=HolidayPackage.class)这似乎对我有效,因为返回类型:HolidayPackage.class是我定义的POJO实体。您认为这种方法有缺点吗?在任何查询中,SELECT*from都不是首选方法。如果可能,在select子句中添加列名。其余的没问题。如果我使用此选项,我将找不到“IDHOTELROOM”列:选择DISTINCT pkg.idHolidayPackage,pkg.name,pkg.inventureheader FROM wah_schema.holidaypack pkg internal JOIN wah_schema.holidaypackagehotel hph ON pkg.idHolidayPackage=hph.idHolidayPackage internal JOIN wah_schema.hotelroom hr ON hr.idHotelRoom=hph.idHotelRoom其中hr.idHotelRoom=?如果您遇到namednavity设备的问题,可以尝试给出的示例。