HQL Hibernate命令

时间:2015-04-16 17:54:56

标签: hibernate grails hql

我有一个复杂的查询(我已经简化了这个问题),这要求我使用findAll,findBy等方法。 有多个实体与一般形式结合在一起......

PackageDelivery有一个customer_id列,链接到Customer。我需要按PackageDelivery.customer.lastName订购结果; 目前我正在使用createSQLQuery来获取结果。由于客户实体是由Hibernate引入的,而不是我的本机SQL查询,但我不能只通过package_delivery.customer.last_name添加订单。有没有办法按实体属性排序Hibernate从本机SQL查询中提取?

select * from PackageDelivery 
inner join PackageContents
left join  ProductBillingInfo

添加了相当多的条件和细节,但这是一般的想法。

PackageDelivery有一个' customer_id'链接到客户的列。我需要通过PackageDelivery.customer.lastName来排序结果; 目前我正在使用createSQLQuery来获得结果。由于客户实体是由Hibernate引入的,而不是我的本机SQL查询,但我不能通过package_delivery.customer.last_name添加订单。有没有办法按实体属性排序Hibernate从本机SQL查询中提取?

select {pd*.},{tl.*},{pc.*} from package_delivery as pd
inner join transport_log on tl.package_id=pd.id
left join package_contents on pd.id=pc.package_id
//order by pd.customer
def session =sessionFactory.getCurrentSession();
def lookup=session.createSQLQuery(que)
.setParameter('startDate',startdate)
.setParameter('endDate',enddate)
.addEntity('pd', ProductDelivery.class)
.addEntity('tl', TransportLog.class)
//need to sort by ProductDelivery.customer.lastName??
//.setResultTransformer( to???)
//.addOrder(Order.desc(to???)

1 个答案:

答案 0 :(得分:0)

您可以添加{c}之类的客户类,并使用.addEntity(' c',Customer.class),然后使用c.last_name的订单。 并建立客户与ProductDelivery的关系