대머리개발자

간만에 mybatis 힘들구만 본문

개발이야기/예외

간만에 mybatis 힘들구만

대머리개발자 2023. 10. 10. 14:09
728x90

해당 오류 한나절..에휴

### Cause: java.lang.UnsupportedOperationException
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:153)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)

proto를 빌드하면 자동으로 아래와 같이 빌드해준다. 배열의 초기값이 emptyList() 자동으로 빌드 해준다...변수명 끝에 밑줄 생기는것도 맘에 안들고...암튼..왜 이야기를 하나면... emptyList()로 초기화 하기되기 때문에 mybatis에서 바인딩이 안 된다. ㅠ

      ...
      mobile_ = "";
      type_ = 0;
      roles_ = java.util.Collections.emptyList();
      ...

진짜 실제 해당 부분이 문제가 맞나 싶어서 일반 DTO를 만들어 동일한 객체(emptyList())로 설정해봤더니... ..어익후

그냥 List()로만 설정해줬어도... 자동으로 만들어주는 Grpc 객체를 재 사용할 수 있었는데;;;

 

내가 하고자 했던 부분은 association을 이용하는 부분이었다.

    <resultMap id="userRoleMapper" type="userRole">
        <result property="seq_"               column="seq"       javaType="java.lang.Integer"/>
        <result  property="roleName_"         column="roleName"  javaType="java.lang.String"/>
    </resultMap>

    <resultMap id="userMapper" type="oauth.user.UserGrpc$User">
        <result  property="uid_"             column="uid"    javaType="java.lang.String"/>
        <result  property="id_"              column="id"     javaType="java.lang.String"/>
        <result  property="name_"            column="name"   javaType="java.lang.String"/>
        <association property="roles_"       javaType="list" resultMap="userRoleMapper"/>
    </resultMap>

위에서 이야기 했던것처럼 userMapper에  roles_가 바인딩이 안된다.

바인딩되는 DTO 객체를 별도로 만들기도 뭐하고..그냥 각각 DB 호출해서 merage했다.ㅠ

 

오류의 발생 지점

 

728x90