2014-01-30 1 views
0

나는 레거시 데이터베이스로 작업하고 있으며 최대 절전 모드로 전환하려고합니다. (A)의 목록 (읽기 전용) 내가 편지를 위해 개체를 수정 만 할 수있어,이 객체에서 내가 얻을 수 있기를 원하는속성을 기반으로 최대 절전 모드 모음 매핑

Table results: 
id (number pk) 
info_id (varchar) 
result (varchar) 

Table info 
id (number pk) 
info_id (varchar) 

Table registration 
id (number pk) 

Table letter 
id (number pk) 
registration_id 

:

내가 좋아하는 뭔가를 보이는 3 개 테이블이

public class Registration { 
    private Long id; 
    private Info info; 
} 

내가 노력 해요 :

public class Letter { 
    private Long id; 
    private Registration registration; 
    private List<Result> results; 
} 

등록 개체가 이미 존재하고 다음과 같습니다 결과 g는 결과가 문자 객체에 객체를 매핑하고, 나는이 같은 시도했습니다 :

<list name="results" table="result" cascade="none" inverse="false"> 
      <key property-ref="registration.info.info_id"/> 
      <index column="info_id " /> 
     <one-to-many class="Result" /> 
    </list> 

나는 기본적으로 개체의 체인을 통해 가입 할 최대 절전 모드 싶은, 그리고 결국처럼 보이는 SQL 얻을 :

SELECT * FROM result,letter,info WHERE letter.info_id=info.info_id AND info.info_id=result.info_id 
AND letter.id=?; 

최대 절전 모드에서 실행 가능합니까?

편집 : 테이블 정보와 등록 정보는 동일합니다. 따라서 info.id=registration.id. 필요한 경우 Letter 객체에 Info를 추가 할 수 있습니다.

+0

info에는 registration_id가 없습니다. – Zeus

+0

나는 쿼리를 수정했다. 위의 내 의견을 참조하십시오. 정보와 등록에는 동일한 PK가 있습니다. –

답변

0

링크마다 here. 관계는 내부 조인을 사용하여 유지 관리 할 수 ​​있습니다. 그래, 네가 할 수있어. registration.id = info.id를 수동으로 쿼리에 추가해야 할 수도 있습니다.

+0

XML에서 어떻게 매핑합니까? XML에서 "letter.info_id = info.info_id AND info.id = letter.registration_id"또는 비슷한 것을 지정하는 몇 가지 방법이 있습니까? –

+0

나는 아무것도 찾지 못했습니다. 나는 그렇게 할 수 없다고 생각한다. – Zeus

+0

도움 주셔서 감사합니다. 뷰 생성을 끝내고 일반적인 "백"매핑을 사용했습니다. –