두 가지 테이블의 결과를 포함해야하는 검색 양식이 있습니다. 테이블은 서로와 별개의 관계가 없습니다. 예제 시나리오에서는 주유소와 식료품 점이 있습니다. 식료품 점 테이블에는 freezerSize, produceStorage, numberOfCarts와 같은 속성이있을 수 있습니다. 주유소 테이블에는 gasTankSizeInGallons, windowCleanerInGallons 등이있을 수 있습니다. 두 테이블 사이에 공유 필드가 있습니다 (예 : numberOfEmployees, squareFeetOfStoreSpace, numberOfShelves 등).하나의 ibatis 쿼리에서 여러 유형 반환
내 검색 쿼리는 주유소와 식료품 점을 정렬하여 표시해야합니다. SQL 유니온을 사용하고 적용 할 수없는 필드를 0 또는 null로 설정하려고 생각했습니다. 그러나, 나는 정말 (두 객체가 다른 유형 때문에) iBATIS를 사용하여이 작업을 수행하는 방법에 대한 난처한 해요 :
<select id="searchQuery" parameterClass="java.util.Map" resultClass="????????????????">
SELECT
storeName, storeCity, storeState, numberOfCarts, freezerSize, 0 gasTankSizeInGallons, 0 windowCleanerInGallons
FROM
grocery_stores
UNION
SELECT
storeName, storeCity, storeState, 0 numberOfCarts, 0 freezerSize, gasTankSizeInGallons, windowCleanerInGallons
FROM
gas_stations
ORDER BY storeState, storeCity, storeName
</select>
주 - 실제 쿼리는 페이지 매김에 의해 순서에 더 많은 일을 가지고, select 필드에는 더 많은 필드가 있고 select 필드의 각 해당 필드에 대한 where 절이 있습니다.
위의 쿼리에 대한 resultClass는 무엇이되어야합니까? 나는 GroceryStore와 GasStation 클래스를 가지고 있는데 둘 다 Store에서 연장됩니다. 그러나 Store에는 GroceryStore 및 GasStation 특정 필드가 많지 않습니다. 두 가지 별도의 쿼리를 수행 할 수 있지만 결과 순서는 Java에서 수행해야하며 많은 양의 데이터를 먼저로드해야하므로 비효율적입니다.
고마워요.