2017-02-25 1 views
0
<mapper namespace="xyz.ivyxjc.RoleMapper"> 
    <resultMap id="roleMapper" type="role"> 
     <id column="id" property="roleName" javaType="string" jdbcType="VARCHAR"/> 

     <result column="role_name" property="roleName" javaType="string" jdbcType="VARCHAR"/> 
     <result column="note" property="note" typeHandler="xyz.ivyxjc.MyStringTypeHandler"/> 
    </resultMap> 
</mapper> 



@ResultMap(value = "roleMapper") 
@Select(value = "select id, role_name as roleName, note from t_role where id=#{id}") 
public Role getRole(Long id); 

Aber es erhebt sich eine Ausnahme:Mapped Statements Sammlung enthält bereits Wert, aber ich habe nur eine Methode der gleichen Signatur

java.lang.IllegalArgumentException: Mapped Statements collection already contains value for xyz.ivyxjc.RoleMapper.insertRole 

Wenn ich @ResultMap(value="roleMapper") entfernen, wird es in Ordnung sein.

Wie kann ich dieses Problem lösen?

Antwort

0

Gerade Frage Titel Berücksichtigung nur eine Methode der gleichen Signatur, haben sie vorschlagen, nach der Nachricht Ausnahme: Mapped Statements collection already contains value for xyz.ivyxjc.RoleMapper.insertRole, dass in der Schnittstelle xyz.ivyxjc.RoleMapper Namen mehr als eine Methode mit Sie insertRole, unabhängig von ihren Parameter und dann erklären ihre Unterschrift ist anders.

Wenn Anweisungen in XML-Mapper anstelle von Annotationen deklariert worden wären, hätten sie dieselbe ID, deshalb kann sie nicht funktionieren.

Die @Select und @ResultMap scheinen mit dem vorliegenden Problem völlig unabhängig zu sein.

Verwandte Themen