小弟刚学HQL,在练习一个查询时用SQL是完成了。可是不知道这样的话如何写HQL。select s.stockName,sp.nominal from stock s
inner join stockPrice sp on s.id=sp.stock_id
inner join (select sp.stock_id, max(sp.stockPriceUpdateTime) maxtime from stockPrice sp group by sp.stock_id) sptemp
on sp.stockPriceUpdateTime = sptemp.maxtime and sptemp.stock_id = sp.stock_idstock和stockprice两张表是一对多关系。
stock里面一个股票相对一个记录,stockprice记录价格信息。
为了要查询每个股票的最新价格,我写了个子查询关联返回同样外键的记录的最大时间和外键id。最后在stockPrice里用子查询出来的时间和外键ID来唯一确定最新记录。
可是这里我不知道大子查询里面,SQL是返回外键HQL里针对这个外键就是一个对象了。
而且我不知道HQL里面内联能写on吗?
麻烦帮我转换成HQL,学习一下。

解决方案 »

  1.   

    再问个相关的问题吧,
    create table dontest(
       id integer,
       size integer,
       outKey integer
    );
    insert dontest (id,size, outKey) values(ua3a981, 10, 100);
    insert dontest (id,size, outKey) values(860a87d, 20, 100);
    这样的一个表,我想找到outKey是100,然后size最大的那个id值。
    select id,size from dontest group by outKey;
    我这样写,可id却一直是能找到的第一句。
    请问一下如何取到?
      

  2.   

    结帖率:6.67% 
    ...inner join需要映射里面的配置的。但是子查询肯定没有这个关系的。所以老实用where a=b吧
      

  3.   

    不要来放黄腔好么?老实个屁,什么都能用where解决还要join干叼?
      

  4.   

    再问个相关的问题吧,
    create table dontest(
      id integer,
      size integer,
      outKey integer
    );
    insert dontest (id,size, outKey) values(ua3a981, 10, 100);
    insert dontest (id,size, outKey) values(860a87d, 20, 100);
    这样的一个表,我想找到outKey是100,然后size最大的那个id值。
    select id,size from dontest group by outKey;
    我这样写,可id却一直是能找到的第一句。
    请问一下如何取到?
    select max(size) from dontest where outKey=100 ;
      

  5.   

    这个就是one2many 或者many2one 然后使用join fetch 查询填充