有关Ibatis parameterClass的错误报告吗?

时间:2012-12-11 09:22:26

标签: java inheritance ibatis

我不说话,写得很好。抱歉。 但我需要你的帮助。 所以...尽管我的英语很糟糕..我在说。 如果我做得很好,请估计并理解我的问题。

我们走了。


CommonVO.java

 package a.b.c;

 public class CommonVO {

     private  String productId;

     public void setProductId(String productId)
     {
         return this.productId;
     }

     public String getProductId(String productId)
     {
         this.productId = productId;
     } 

TestVO.java

package a.d.e;

public class TestVO extends CommonVO {
     private  String year;

     public void setYear(String year)
     {
         return this.year;
     }

     public String getYear(String year)
     {
         this.year = year;
     }
}

Ibatis查询xml

<select id="testSelect" parameterClass="a.d.e.TestVO" resultClass="int">
    select a, b
      from TEST_TBL
     where 1 = 1
     &lt;isNotEmpty prepend="AND" property="productId">
         product_id = #productId#
     &lt;isNotEmpty>
</select>

有时,会发生以下错误:

> --- The error occurred while applying a parameter map.
> --- Check the testSelect-InlineParameterMap.
> --- Check the parameter mapping for the 'productId' property.
> --- Cause: java.sql.SQLException: ▒▒▒▒▒▒▒▒ ▒▒ ▒ε▒▒▒ com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred while applying a parameter map.
> --- Check the testSelect-InlineParameterMap.
> --- Check the parameter mapping for the 'productId' property.
> --- Cause: java.sql.SQLException: ▒▒▒▒▒▒▒▒ ▒▒ ▒ε▒▒▒
>         at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)
>         at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
>         at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:567)
>         at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:541)
>         at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
>         at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298)
>         at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:166)
>         at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249)
>         at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)
>         at egovframework.rte.psl.dataaccess.UmmAbstractDAO.list(UmmAbstractDAO.java:124)
>         at go.narastat.meta.std.service.impl.testSelect(StdMetaDAO.java:185)
>         at go.narastat.meta.std.service.impl.StdMetaImpl.stdMetaNoMatchSvyItemList(StdMetaImpl.java:164)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:600)...

奇怪的是,它间歇性地发生......

你知道吗?任何答案或评论都会有所帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

编写#productId时#ibatis从参数类调用此属性的get-Method。

你的getter和setter是错误的方式。 getter应该返回值,setter应该设置值。

改变它,告诉我们你的结果;)

示例:

<强> CommonVO.java

public void setProductId(String productId)
 {
      this.productId = productId;
 }

 public String getProductId()
 {

     return this.productId;
 }