我正在使用 spring 与 postgresql 进行交互。这是我的问题。
人具有三个属性:
如果我尝试使用以下方法从数据库中获取人员列表
List<Person> person= getJdbcTemplate().query("select * from person where name=?",new BeanPropertyRowMapper<person>(Person.class),name);
编译器提示
Failed to convert property value of type 'org.postgresql.jdbc.PgArray' to required type 'java.lang.String[]' for property 'hobbies';
有什么方法可以将 pgarray 映射到 java 数组吗?
通过实现我们自己的 RowMapper
public class PersonRowMapper implements RowMapper<Person>
现在,我们可以操作 rs.getArray() 的结果,然后返回 person。
没找到jdbctemplate + pgArray的解决方法。所以我写了一些修复。
你可以使用自己的
ColumnMapRowMapper
.
public class ColumnRawMapper extends ColumnMapRowMapper {
@Override
protected Object getColumnValue(ResultSet rs, int index) throws SQLException {
Object obj = rs.getObject(index);
if (obj instanceof PgArray) {
return ((PgArray) obj).getArray();
}
return super.getColumnValue(rs, index);
}
}
Map<String, Object> ggWp = jdbcTemplate.queryForObject("select * from temp where ss='3'", new ColumnRawMapper());