我正在使用Spring 3.1.2开发Web应用程序,并且需要创建自定义行映射器。我已经创建了一个实现RowMapper的私有静态最终类,但是我收到错误消息“RowMapper类型不是通用的;不能使用参数对其进行参数化”。

我的lib文件夹中的所有与Spring相关的jar都是3.1.2.RELEASE版本。我一直找不到其他地方的东西。任何想法为什么会发生这种情况?

谢谢。

这是示例代码:

public class OutPatient extends Patient{
     @Pattern(regexp="[0-9]+", message="OPD No. should only contain digits.")
String opdNo;

public String getOpdNo() {
    return opdNo;
}

public void setOpdNo(String opdNo) {
    this.opdNo = opdNo;
}
}

DAO类:
 @Repository("dbHelper")
 public class DBHelperImpl{
private JdbcTemplate jdbcTemplate;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

@Autowired
public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
    this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}

     public List<OutPatient> fetchOutPatients() {
    String sql = "SELECT  OPDNO as opdNo FROM `test`.`out_patient`";

    @SuppressWarnings("unchecked")  //Have to add this annotation to prevent warning
    List<OutPatient> outPatients = jdbcTemplate.query(sql, new OutPatientRowMapper());
    return outPatients;

}

     private static final class OutPatientRowMapper implements RowMapper{  //Unable to add <OutPatient> generics here!
    public OutPatient mapRow(ResultSet rs, int rowNum) throws SQLException {
        OutPatient outPatient = new OutPatient();
        outPatient.setOpdNo(rs.getString("opdNo"));
                       return outPatient;
              }
     }

最佳答案

我遇到了同样的问题,Eclipse警告我RowMapper不是通用的。

因此,我手工编写了导入:

import org.springframework.jdbc.core.RowMapper;

产生此错误的位置:The import org.springframework.jdbc.core.RowMapper collides with another import statement
因此,我查看了其他导入语句以及在Spring项目中发现的潜伏之处:

import javax.swing.tree.RowMapper;

...我删除了该导入,然后一切正常进行。

关于java - Spring 3.1.2 RowMapper参数化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13819995/

10-10 02:33