MyBatis <collection>
요소 (버전 3.2.7 사용)에 복합 키를 전달할 수 없습니다. MyBatis documentation 상태 :MyBatis의 복합 키 <collection> 매핑
주 : 복합 키를 처리하려면 = "{prop1 = COL1, prop2 = COL2} '구문 열을 사용하여 중첩 된 SELECT 문에 전달할 여러 열 이름을 지정할 수 있습니다. 그러면 prop1 및 prop2가 대상 중첩 select 문에 대한 매개 변수 객체에 대해 설정됩니다.
그러나, 내 모든 시도는이 예외를 (다른 ResultsMap에있는)
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class java.lang.Integer with invalid types() or values(). Cause: java.lang.NoSuchMethodException: java.lang.Integer.<init>()
컬렉션을 생산 구현하는 것은 :
<collection property="foos" ofType="FooObject"
column="{param1=user_id,param2=foo_id}" select="getFoosByUser" >
<id property="userId" column="user_id" />
<id property="foo" column="foo_id" />
<result property="fooName" column="foo_name" />
</collection>
그것의 ArrayList를 반환해야 Foo 개체. 복합 키는 user_id 및 foo_id입니다. 선택 검색어 :
<select id="getFoosByUser" parameterType="Integer" resultType="FooObject">
SELECT
user_id AS userId,
foo_id AS fooId,
foo_name AS fooName
FROM foo_table
WHERE user_id = #{param1}
AND foo_id = #{param2}
</select>
하나의 매개 변수 만 사용하면 검색어가 올바르게 작동합니다. foo_id=#{param2}
을 제거한 다음 컬렉션에 column=user_id
을 사용했지만 두 개의 키에 대해 열 속성을 올바르게 구성하는 방법을 찾지 못했습니다. 어떤 아이디어?
parameterType 속성을 제거하고 위의 모든 항목을 그대로 유지하면 감사합니다! – user2759013