一个BulkBeanException
当 iBatis 尝试应用结果映射时抛出该错误,但通过同一 jar 进行的部署之间不一致(本地部署没问题,服务器部署则不然)。
我想出了如何阻止这个问题(请参阅下面的答案),但我更感兴趣的是了解诊断 cglibification 为什么在不同运行时环境中发生/发生不同的策略。我认为不一致的行为是由于加载库的顺序不同造成的,但还没有弄清楚如何确认这一点( $PATH
和 $CLASSPATH
在不同环境中解析为相同的东西)。还有什么我应该看的吗?
出现错误
-
java -jar <jar>
在 CentOS 机器上 - 在 OS X 上通过 Eclipse 运行 Mule 运行时
没有收到错误
-
java -jar <jar>
在 OS X 上 - OS X 上通过 Maven 实现 JUnit
- 在 OS X 上通过 Eclipse 运行 JUnit
堆栈跟踪
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in ibatis/MyClassName.xml.
--- The error occurred while applying a result map.
--- Check the MyClassName.result.
--- The error happened while setting a property on the result object.
--- Cause: net.sf.cglib.beans.BulkBeanException: 1
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:204) ~[mybatis-2.3.5.jar!/:?]
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139) ~[mybatis-2.3.5.jar!/:?]
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:578) ~[mybatis-2.3.5.jar!/:?]
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:552) ~[mybatis-2.3.5.jar!/:?]
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118) ~[mybatis-2.3.5.jar!/:?]
at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298) ~[mybatis-2-spring-1.0.1.jar!/:1.0.1]
at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:296) ~[mybatis-2-spring-1.0.1.jar!/:1.0.1]
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203) ~[mybatis-2-spring-1.0.1.jar!/:1.0.1]
... 77 more
最佳答案
iBATIS 尝试应用结果映射的 Java bean 具有异常(不符合 bean?)setter。这些 setter 没有按照标准返回 void ,而是返回对象本身,以便可以链接 set 操作(我们有一些 Haskell 程序员正在研究这个项目:))。
在发生这种情况时,通过将 setter 方法更改回之前的状态(使用 void
return 定义它们)来解决该问题。
关于java - 使用 iBatis 和 Spring 的 net.sf.cglib.beans.BulkBeanException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35638664/