実行したいコードは次のとおりです。
Query query = getSession().createQuery("select count(*),uv.voter.gender from UserVoter uv where " +
" uv.voter.age between "+startAge+" and "+endAge+" and uv.hamlet.hamletId = :hamletId group by uv .voter.gender ") ;
//query.setParameter("publicationDateId",publicationDateId);
query.setParameter("hamletId", hamletId);
return query.list();
start パラメータと end パラメータの場合は次のとおりです。
18-25
25-35
35-45
これら 3 つのケースでは、クエリを 3 回実行する必要があります。上記の 3 つのケースについて、1 つのクエリで結果を取得したいと考えています。についてのアイデアがありnew map()
ますが、どうすればそれを行うことができますか?
出力は、次のような入力パラメーターのペアにマップする必要があります。
18-25,55,male 18-25,56,female 25-35,44,male..
mysqlで私はこれを達成します
select concat(18,'to',25),count( v.voter_id),v.gender from voter v join user_voter u on v.voter_id = u.voter_id
where v.age between 18 and 25 and u.hamlet_id=10 group by v.gender
union
select concat(26,'to',35),count( v.voter_id),v.gender from voter v join user_voter u on v.voter_id = u.voter_id
where v.age between 26 and 35 and u.hamlet_id=10 group by v.gender
union
select concat(36,'to',50),count( v.voter_id),v.gender from voter v join user_voter u on v.voter_id = u.voter_id
where v.age between 36 and 50 and u.hamlet_id=10 group by v.gender
union
select concat(51,'to',200),count( v.voter_id),v.gender from voter v join user_voter u on v.voter_id = u.voter_id
where v.age between 51 and 200 and u.hamlet_id=10 group by v.gender;
しかし、ネイティブSQLを使用せずに休止状態でその効果を得る方法は?