최대 절전 모드에서 다음을 수행 할 수 있는지 궁금합니다.최대 절전 모드의 명명 된 쿼리 및 스프링으로 DTO의 List 특성 채우기
public class ClassDTO {
private String className;
private List<String> studentNames;
//getters & setters
}
와 SQL 쿼리가 포함 된 다음 HBM 파일 :
+----------+------------+
|CLASS_NAME|STUDENT_NAME|
+----------+------------+
| CS106 | BILL |
| CS106 | GEORGE |
| CS106 | MICHEL |
| ELEC8 | WILL |
| ELEC8 | MIKE |
| ELEC8 | BETTY |
+----------+------------+
: 우리는 다음과 같은 결과를 얻을 수 있습니다 데이터베이스에서 쿼리를 실행하면
<hibernate-mapping>
<class name="app.ClassDTO">
<id name="className" type="java.lang.String" />
<property name="studentNames" type="java.lang.List" />
</class>
<sql-query name="classQuery">
<return alias="class" class="app.ClassDTO" />
select classTable.CLASS_NAME AS {class.className}, ST.STUDENT_NAME
from CLASS classTable
join STUDENT ST on ST.CLASS_ID=classTable.CLASS_ID
where ST.age<18
</sql-query>
</hibernate-mapping>
을 다음 DTO을 고려
우리가 최대 절전 모드에서 쿼리를 실행한다면 우리는 ClassDTO 객체 목록을 얻게된다. 다음과 같은 방법으로 객체를 초기화 할 수 있습니까?
List<ClassDTO> result = getHibernateTemplate.findByNamedQuery("classQuery").;
resul.size(); //<-- the list size should be 2 (one entry for CS106 and another for ELEC8)
result.get(0).getStudentNames().size(); //<-- the size should be 3 for BILL, GEORGE and MICHEL who are linked to the class CS106
최대 절전 모드 문서를 검색했지만 아직 답변을 찾지 못했습니다. 어떤 도움도 정말 절망적입니다. 사전에 녀석들 덕분에 . 당신이 조금 더 데이터를 정상화하고 매핑을 조정할 경우
은 내가 무엇을 찾고 있어요 것은 일부입니다 : 당신이처럼 표를 마칠 경우
, 당신은 정말 열심히하지 않은, 자신의 ClassDTO을 만들어야합니다 클래스별로 고유 한 이름을 선택하고 클래스 당 여러 개의 학생 이름을 사용하여 'studentLists'를 채울 작업별로 그룹을 정렬합니다. – snajahi
고전적인 일대일 관계가 아닌가요? 또는 나는 무엇인가 놓치고 있냐? 웹상의 몇 가지 예 : http://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example/, http://viralpatel.net/blogs/hibernate-one-to-many- xml-mapping-tutorial/등등. 나는이 예제들에서 보여지는 최대 절전 모드 맵핑이 더 좋고 더 많은 Hibernate-ish라고 생각한다. 그들은 세트로 '많은'부분을 가지고 있는데, 나는 그것이 문제가되어서는 안된다고 생각합니다. –
당신이 내게 준 예제는 사실 일대 다 릴레이션 - 배송을하는 엔티티에 관한 것입니다. 내가 가지고있는 것은 DTO (지속되지 않음)입니다. 그냥 그만큼 채우고 싶습니다. 클래스와 학생 ** 엔티티 ** (내 질문에 표시되지 않음)에는 물론 관심이없는 다른 속성이 있습니다. – snajahi