当前位置: 代码迷 >> Java Web开发 >> Hibernate一对多对的查询HQL有关问题
  详细解决方案

Hibernate一对多对的查询HQL有关问题

热度:3694   发布时间:2013-02-25 21:07:47.0
Hibernate一对多对的查询HQL问题
今天做项目  碰到一个问题:现有 Order Ticket Jingdian 三个实体类 ,分别对应 t_order,t_ticket,t_jingdian三张表
类Order里面有ticketId
类Ticket里面有List<Jingdian>
类Jingdian里面有 memo
请问一下,通过 Jingdian里面的 memo 属性来查询订单的HQL语句应该怎么写?
因为Ticket里面没有memo字段属性,还请知道的大神指点一二。 
"from Order o,Ticket t,Attractions a where o.ticketId=t.id and a in elements (t.attractions) and a.memo like ?" ;
上面的写法不对 不知道该怎么写
------最佳解决方案--------------------------------------------------------
select * from Order o  left join o. ticketId left join o. ticketId. Jingdian where o. ticketId. Jingdian.demo like '%?%'不行嘛?

o.ticketID分别是你Order bean里面的属性
Jingdian 是你Ticket的list< Jingdian>的属性名称!
------其他解决方案--------------------------------------------------------
这不知道你3个对应bean的配置是如何。
如果HQL有难度,LZ完全可以用sql来解决了。
hibernate这几个是都支持的了!
------其他解决方案--------------------------------------------------------
Hibernate 查询 配置好了,没那么麻烦,没明白楼主表的关系。
Ticket关联Order  order内外键为ticketId
Jingdian 是里面的外键是 ticketId 么?
查询条件是通过Ticket里面的 memo字段 做精确查询么?
------其他解决方案--------------------------------------------------------
有没有知道呀
------其他解决方案--------------------------------------------------------
  whereSql = "from Order o left join o.ticketId left join o.ticketId.attractions where o.ticketId.attractions.memo like ? " ;
这样写报错 
>Request processing failed; nested exception is java.lang.NullPointerException</u></p><p><b>description</b> <u>The server encountered an internal error that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
 

引用:
select * from Order o  left join o. ticketId left join o. ticketId. Jingdian where o. ticketId. Jingdian.demo like '%?%'不行嘛?

o.ticketID分别是你Order bean里面的属性
Jingdian 是你Ticket的list< Jing……

------其他解决方案--------------------------------------------------------
引用:
Hibernate 查询 配置好了,没那么麻烦,没明白楼主表的关系。
Ticket关联Order  order内外键为ticketId
Jingdian 是里面的外键是 ticketId 么?
查询条件是通过Ticket里面的 memo字段 做精确查询么?


不是是这样的 Order跟Ticket关联 Ticket跟Jingdian关联  Ticket跟Jingdian是多对多,查询条件是Jingdian里的memo字段,做模糊查询
  相关解决方案