HQL을 사용하여 동적 쿼리를 만들고 있지만, 많은 매개 변수 때문에 Criteria가 훨씬 더 "읽기 쉽습니다"라고 생각합니다. 쿼리는 다음과 같이 표시됩니다.관련 조인을 반환하는 HQL, 기준에서이를 수행하는 방법?
String queryString = "select u from ReportSalesUnit as r join r.recipients as u where r.id = :reportSalesUnitId";
if (firstName != null)
{
queryString += " and lower(u.firstName) like :firstName";
}
if (lastName != null)
{
queryString += " and lower(u.lastName) like :lastName";
}
if (email != null)
{
queryString += " and lower(u.email) like :email";
}
if (phoneNr != null)
{
queryString += " and u.phoneNr like :phoneNr";
}
Query query = session.createQuery(queryString);
if (firstName != null)
{
query.setParameter("firstName", firstName.toLowerCase() + "%");
}
if (lastName != null)
{
query.setParameter("lastName", lastName.toLowerCase() + "%");
}
if (email != null)
{
query.setParameter("email", email.toLowerCase() + "%");
}
if (phoneNr != null)
{
query.setParameter("phoneNr", phoneNr + "%");
}
query.setParameter("reportSalesUnitId", reportSalesUnitId);
솔직히 말해서 관련 조인을 기준으로 반환하는 방법을 모릅니다. 여기에 대한 답변을 찾고 있었지만 찾을 수 없습니다 : http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html, 누군가가 나를 도울 수 있습니까? 약간의 설명이 좋을 것입니다.
사실 내가 요구 한 것이 아닙니다. 내 select는 다음과 같이 보입니다 :'ReportSalesUnit에서 r을 r.recipients as join '으로 선택하십시오. 그리고 HQL이있는'ReportSalesUnit as r' 대신에''r.recipients''와 같은 조인 ('r.recipients')을 반환하는 방법이 궁금합니다. – kamil
을 위해 생성되었습니다. Ok, 나는 그것을 얻었고 대답을 편집했습니다. – faradaj
내가 말한 것처럼 criteria.createCriteria (ReportSalesUnit.class)는 위에서 언급 한 asso ~ join을 반환하기 위해'criteria.createAlias ("recipients", "recipients")를 추가해야한다. .setFetchMode ("받는 사람", FetchMode.JOIN); 및 단순히'criteria.list()'? 아니면 다른 방법으로 – kamil