在hibernate中我想根据worklistId字段和paydate字段的最大值来得到他的主键:
我在后写的sql:
StringBuffer sb=new StringBuffer("select p1.id from PayAmount as p1 where 1=1 ");
if(worklistId!=null && !"".equals(worklistId)) {
sb.append(" and p1.paydate=(select Max(p.paydate) from PayAmount as p ");
sb.append("and p.worklistId='");
sb.append(worklistId);
sb.append("')");以下是控制台显示的sql:
select p1.id from com.chinantn.oa.payamount.domain.PayAmount as p1 where 1=1  and p1.paydate=(select Max(p.paydate) from com.chinantn.oa.payamount.domain.PayAmount as p and p.worklistId='402880871a9414be011a94168e570004')控制台提示有错误:org.hibernate.QueryException: unexpected token:
那我应该怎么写呢?

解决方案 »

  1.   

    select p1.id
      from com.chinantn.oa.payamount.domain.PayAmount as p1
     where 1 = 1
       and p1.paydate =
           (select Max(p.paydate)
              from com.chinantn.oa.payamount.domain.PayAmount as p 
              and p.worklistId = '402880871a9414be011a94168e570004')
    多了and
      

  2.   

    哦 ,也不是 ,应该是少一个where条件吧 
      

  3.   

    Oracel跟hibernate搭配上了!!!大哥,那你要的是开发方便还是高性能呢?
      

  4.   

    oracle 难道不可以给hibernate相提并论吗?hibernate 可以用sql server的驱动,也可以用oracle的驱动.
    不过sql 语句经过hibernate包装后应该都是一样的.....我想开发方便,可以了吧!!!