[
https://issues.apache.org/jira/browse/IBATIS-501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Clinton Begin closed IBATIS-501.
--------------------------------
Resolution: Won't Fix
Fix Version/s: 2.3.2
Assignee: Clinton Begin
Added to the release notes
> 2.3.1 throws exception for java bean specification violation (2.3.0 not)
> ------------------------------------------------------------------------
>
> Key: IBATIS-501
> URL: https://issues.apache.org/jira/browse/IBATIS-501
> Project: iBatis for Java
> Issue Type: Bug
> Components: SQL Maps
> Affects Versions: 2.3.1
> Environment: ibatis-2.3.1.710
> Reporter: Kai Grabfelder
> Assignee: Clinton Begin
> Fix For: 2.3.2
>
>
> Assume the following class com.foo.bar.Bean with the following methods:
> void setFoo(int)
> void setFoo(String)
> int getFoo()
> I'm using this bean in an implicit parameter map as a parameter to an select
> statement that looks like this
> <select id="getIds" parameterClass="java.util.Map"
> resultClass="java.lang.Integer">
> select * from dual where 1 = #bean.foo#
> </select>
> with the bean being a property of the map. This statement is working with
> iBATIS 2.3.0 but iBATIS 2.3.1 throws the following exception when executing
> the select:
> Could not get property 'foo' from com.foo.bar.Bean. Cause:
> java.lang.RuntimeException: Illegal overloaded setter method with ambiguous
> type for property foo in class class com.foo.bar.Bean. This breaks the
> JavaBeans specification and can cause unpredicatble results.
> This exception makes sense when it comes to actually using the setters but as
> only the getters are used I think it should not be thrown. It is perfectly ok
> for me, if you consider this as won't fix, but please at least mention the
> change in the release notes because it breaks backward compatibility.
> See below for the relevant parts of the stacktrace
> Caused by: com.ibatis.common.beans.ProbeException: Could not get property
> 'foo' from com.foo.bar.Bean. Cause: java.lang.RuntimeException: Illegal
> overloaded setter method with ambiguous type for property foo in class class
> com.foo.bar.Bean. This breaks the JavaBeans specification and can cause
> unpredicatble results.
> at
> com.ibatis.common.beans.ComplexBeanProbe.getProperty(ComplexBeanProbe.java:336)
> at
> com.ibatis.common.beans.ComplexBeanProbe.getObject(ComplexBeanProbe.java:190)
> at com.ibatis.common.beans.GenericProbe.getObject(GenericProbe.java:74)
> at
> com.ibatis.sqlmap.engine.exchange.ComplexDataExchange.getData(ComplexDataExchange.java:65)
> at
> com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.getParameterObjectValues(ParameterMap.java:133)
> at
> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:181)
> ... 30 more
> Caused by: java.lang.RuntimeException: Illegal overloaded setter method with
> ambiguous type for property contractYear in class class com.foo.bar.Bean.
> This breaks the JavaBeans specification and can cause unpredicatble results.
> at
> com.ibatis.common.beans.ClassInfo.resolveSetterConflicts(ClassInfo.java:163)
> at com.ibatis.common.beans.ClassInfo.addSetMethods(ClassInfo.java:141)
> at com.ibatis.common.beans.ClassInfo.<init>(ClassInfo.java:76)
> at com.ibatis.common.beans.ClassInfo.getInstance(ClassInfo.java:509)
> at
> com.ibatis.common.beans.ComplexBeanProbe.getProperty(ComplexBeanProbe.java:315)
> ... 35 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.