私は既存のアプリケーションの変更に取り組んでおり、これら2つのことを使用することにしました。
マップされていないオブジェクトは、2つの整数プロパティで構成される単純なオブジェクトです。
public class EmployeeScore {
private int id;
private int score;
}
そして私は次のことを行うDAOを持っています:
public List<EmployeeScore> findEmployeeTotals(int regionId, int periodId) {
DataVerify.greaterThan(regionId, 0, "Invalid Region id: Region Id cannot be zero");
DataVerify.lessThan(regionId, 4, "Invalid Region id: Region id cannot be greater than 3");
List<EmployeeScore> results = (List<EmployeeScore>) currentSession().createSQLQuery(
"select n.EMP_ID, SUM(DISTINCT(nom.TOTAL_POINT)) from" +
" NOMINEE n join NOMINATION nom on nom.NOM_ID = n.NOM_ID" +
" join EMPLOYEE e on n.EMP_ID = e.EMP_ID" +
" join COMPANY c on c.COMPANY_CODE = e.COMPANY_CODE" +
" join REGION r on r.REGION_ID = c.REGION_ID" +
" where nom.PERIOD_ID = :periodId" +
" AND nom.STATUS_ID = 2" +
" AND e.ISACTIVE = 1" +
" AND nom.CATEGORY_CODE != 'H'" +
" AND r.REGION_ID = :regionId" +
" group by n.EMP_ID")
.setParameter("regionId", regionId)
.setParameter("periodId", periodId)
.list();
return results;
}
それは私が知っている巨大なクエリです。テストで問題が発生しています。これら2つを正しく適用する方法がわからないためだと思います。
私のテストは次のようになります。
@Test
@Transactional(isolation = Isolation.SERIALIZABLE)
public void testEmpScore() {
NomPeriod period = nomPeriodHibernateDAO.findById(6);
Region region = regionHibernateDAO.findById(1);
List<EmployeeScore> results = winnerHibernateDAO.findEmployeeTotals(region.getId(), period.getId());
results.toString();
Assert.assertEquals(13, results.size());
}
13個のオブジェクトタイプを返す必要EmployeeScore
がありますが、代わりに0を返すため、テストは失敗します。
私が間違っていることの正しい方向に私を向けることができますか?マッピングされていないため、オブジェクトが認識しているものでなければならないことはわかっていますが、スコア値またはID値は異なるテーブルまたは集計を参照しているため、マッピングする方法がありません。
ありがとう。