2016-04-02 7 views
0

すみません、私の最初の英語です。スプリングデータJPA仕様groupBy

jpaをgroupbyにするには、次のようにします:select scrip、dustup、count(*)from data flow group from scrip、dstip ので、これらのコードを書く:

public class DataflowSpec { 
    public static Specification<Dataflow> search(final String[] group, final String[] sort, final String[] desc) { 
     return new Specification<Dataflow>() { 
      @Override 
      public Predicate toPredicate(Root<Dataflow> root1, CriteriaQuery<?> query1, CriteriaBuilder builder) { 
       // TODO Auto-generated method stub 

       CriteriaQuery<Tuple> query = builder.createQuery(Tuple.class); 

       Root<Dataflow> root = query.from(Dataflow.class); 


       query.multiselect(root.get("srcip"), root.get("dstip"), builder.count(root)); 

       query.groupBy(root.get("srcip"), root.get("dstip")); 

       query.orderBy(builder.desc(root.get("srcip").as(BigInteger.class))); 
       return query.getRestriction(); 
      } 
     }; 
    } 
} 

しかし、SQLのログは次のとおりです。 休止:

select 
    count(dataflow0_.id) as col_0_0_ 
from 
    Dataflow dataflow0_ 

休止状態:

select 
    dataflow0_.id as id1_2_, 
    dataflow0_.byteall as byteall2_2_, 
    dataflow0_.bytedn as bytedn3_2_, 
    dataflow0_.byteup as byteup4_2_, 
    dataflow0_.dstip as dstip5_2_, 
    dataflow0_.dstport as dstport6_2_, 
    dataflow0_.engieid as engieid7_2_, 
    dataflow0_.flag as flag8_2_, 
    dataflow0_.netid as netid9_2_, 
    dataflow0_.pkgall as pkgall10_2_, 
    dataflow0_.pkgdn as pkgdn11_2_, 
    dataflow0_.pkgup as pkgup12_2_, 
    dataflow0_.protocolid as protoco17_2_, 
    dataflow0_.rtt as rtt13_2_, 
    dataflow0_.srcip as srcip14_2_, 
    dataflow0_.srcport as srcport15_2_, 
    dataflow0_.updatetime as updatet16_2_ 
from 
    Dataflow dataflow0_ limit ? 

をので、それを解決する方法?ありがとう!

+0

JPQLで試しましたか? – 11thdimension

+0

WHERE句の述語を(どこかに)返します...そして、SELECT句の部分はどうなりますか? –

+0

いいえ、私はちょうど仕様を使いたいです。 –

答えて

0

仕様はgroupByをサポートしていません。 SimpleJpaRepositoryがquery.select(root)によってquery.select/multiselectに置き換えられました

関連する問題