2016-11-28 6 views
0

私はhibernateを使用しています。データを取得する場所は基準を使用しています。しかし、私は基準を使用していくつかの制限があると思う。私は、休止状態で基準を使うことによって可能と感じられることを以下に尋ねたい。hibernateの条件クエリ内に基準を設定できますか?

基準ベースで記述することができますどのようにクエリ以下今私は基準ベース休止クエリを書くことができるためとして

select * from (select d.priceId , sum(d.price) as sumP, avg(d.price) as avgP from data d group by d.priceId) as adata where sumP like '%%'; 

を休止SQL以下:

select d.priceId , sum(d.price) as sumP, avg(d.price) as avgP from data d group by d.priceId 

として

Session session = sessionFactory.getCurrentSession(); 
criteria = session.createCriteria(Data.class, "data") 
criteria.setProjection(Projections.projectionList() 
.add(Projections.groupProperty("d.priceId")) 
.add(Projections.sqlProjection("sum(d.price) as sumP", new String[] {"sumP"},new org.hibernate.type.BigDecimalType[] {new org.hibernate.type.BigDecimalType()}), "sumP") 
.add(Projections.sqlProjection("avg(d.price) as avgP", new String[] {"avgP"},new org.hibernate.type.BigDecimalType[] {new org.hibernate.type.BigDecimalType()}), "avgP")); 

以下

次に、以下のSQLの条件ベースクエリを書く方法:

select * from (select d.priceId , sum(d.price) as sumP, avg(d.price) as avgP from data d group by d.priceId) as adata where sumP like '%%'; 

上記の手伝いをしてください。

+0

JPA APIではなくHibernate APIを使用しているので、JPAとしてタグ付けしないでください –

答えて

関連する問題