iteye_9794
iteye_9794
2010-11-03 13:54

Hibernamte多表查询 HQL怎么写

已采纳

[b]哪位大哥帮小弟看看,小弟感激不尽。[/b]对应的类有
Goods (商品)
private String id;//编号
private String name;//名字

private Double price;//价格

OrderDetail//订单
private String id;//订单号
private List orderDetailItem = new ArrayList();
——-------------------------------
OrderDetailItem//订单明细
private String id;//ID
private Goods goods = new Goods();
private Integer num;//数量

怎么写HQL语句把三个表关联在一起,根据订单的ID查询出对应该的商品名字、价格、数量?
我也写了总是报错如下:
select new org.ncist.evaaass.qsl.domain.shop.Goods(o.id,o.name,o.price),

    new org.ncist.evaaass.qsl.domain.shop.OrderDetailItem(p.num)

    from org.ncist.evaaass.qsl.domain.shop.OrderDetail e,

    org.ncist.evaaass.qsl.domain.shop.OrderDetailItem p,

    org.ncist.evaaass.qsl.domain.shop.Goods o 

    where o.id = p.id  and p.id = e.id and  e.id='402880e82c054f2c012c05749f44000e'
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • yourname1111 yourname1111 11年前

    OrderDetailItem缺少了OrderDetail的多对一,需要补上,然后
    select model.goods model from OrderDetailItem as model where model.这里填OrderDetail多对一的变量名.id = '402880e82c054f2c012c05749f44000e'

    点赞 评论 复制链接分享
  • weixin_42530516 weixin_42530516 11年前

    学习啦!up!!

    点赞 评论 复制链接分享
  • ayling520 ayling520 11年前

    好久没玩过hibernamte了。

    你的这些pojo是eclipse自动生成的吗?

    如果不是的话,你就需要在xml文件中对这些表关联。
    private Set orderDetailItem = new HashSet();

    from OrderDetail od where od=订单号

    点赞 评论 复制链接分享

相关推荐