2010-02-24 2 views
0

Office 개체와 장치 개체가 있습니다. 사무실에는 장치가 있고 장치는 사무실에 속합니다. 따라서 Office 개체를 가져 오면 Office.Device 참조가 채워지고 Device 개체에는 Office 개체가 있어야합니다. 그것은 제가 생각하기에 순환 참조입니다.iBatis 순환 참조 질문

iBATIS에서이 작업을하고 싶습니다. 그러나 올바르게 수행하는 방법을 알 수는 없습니다.

"resultMap에서 생성 된 객체에이 속성을 설정할 수있는 resultMap이 필요한 것 같습니다." 오히려이 속성 (객체)을 다른 쿼리 (N + 1)로 채우거나 결과 집합과이 다른 resultMap을 사용하여이 속성을 채 웁니다.

이 시나리오에서는 다른 결과 맵을 만드는 데 신경 쓰지 않아도됩니다.

또 다른 완벽한 대답은 iBATIS가 스키마에 결함이있어이 작업을 수행하지 않는다는 것입니다. 이 경우 다른 옵션을 제공하십시오.

답변

0

장치가 존재하는 Office에 대한 순환 참조 만 있으면되고 사무실에 장치가 포함될 수 있고 해당 장치에 추가 사무실 목록이 포함될 수있는 시나리오가없는 경우.

그러면 RowHandler가 아마도 작업을 수행 할 것입니다. 정상적인 방식으로 SQL 맵을 통해 사무실과 장치를 쿼리하고 사무실 관계를 장치 관계에 충족시킵니다. 그런 다음 쿼리 호출과 관련된 RowhHandler 내에서 장치 멤버 내의 포함 된 office 객체에 대한 참조를 채 웁니다. 그러면 순환 참조가 만들어지고 추가 쿼리가 필요하지 않습니다.

0

http://www.javalobby.org/java/forums/t75161.html에는 또 다른 resultMap 결과를 속성으로 포함하는 예제가 있습니다. 나는 이것을 한 번도 해보지 않았지만, 그의 예에서 보면 그것이 효과가있는 것처럼 보입니다. 아마도 4 개의 SQL 쿼리가있을 것입니다. 1 개는 사무실 용이고 1 개는 관련 장치를 가져온 다음 관련 장치 쿼리는 연결된 사무실을 가져옵니다. 희망이 도움이됩니다.