2010-02-24 68 views
0

我有一個Office對象和一個設備對象。辦公室有一臺設備,一臺設備屬於一間辦公室。因此,獲取Office對象應該填充Office.Device引用,並且Device對象應該具有它所屬的Office對象。這是我想的循環引用。iBatis循環引用問題

我想在iBATIS中這樣做,但我無法弄清楚如何正確地做到這一點。

這幾乎就像我需要一個resultMap,我可以「將此屬性設置爲由剛纔調用我的resultMap創建的對象」。而是用另一個查詢(N + 1,我知道)填充這個屬性(對象),或者使用結果集和這個其他resultMap來填充這個屬性。

我不介意爲此場景創建另一個resultMap。

另一個完全可以接受的答案是,iBATIS不會這樣做,因爲您的模式有缺陷。如果是這樣的話,給我一些其他的選擇。

回答

0

如果設備只需要有一個循環引用到辦公室,它存在於內部,並且沒有辦公室可以包含設備並且該設備可以包含更多辦公室的列表。

然後RowHandler可能會完成這項工作。以正常方式通過SQL映射查詢辦公室和設備,並滿足辦公室與設備的關係。然後在與查詢調用關聯的RowhHandler中,在設備的成員中填充包含office對象的引用,從而製作循環引用並且不需要額外的查詢。

0

http://www.javalobby.org/java/forums/t75161.html在底部附近有一個例子,其中包含另一個resultMap作爲屬性的結果。我從來沒有這樣做過,但從他的例子來看,它似乎會起作用。你可能會有4個SQL查詢:1個辦公室和一個拉關聯設備的相關設備,然後是相應的設備查詢,其中一個查詢關聯辦公室。希望這可以幫助。