我试图执行以下操作:我有一些复杂的SQL (使用SUM(距离) distanceSum作为返回列的标识符),它返回一些应该解析到类的值(只包含这些列所需的值)。但是,我只需要内存中的结果,而不是实体。我已经尝试创建一个存储库来使用带有本机= true的@Query注释来执行SQL。但是,存储库不能是自动存储的,可能是因为存储库只针对实体。
那么,是否有某种方式来调整非实体的存储库,或者是否有一种方法,而不是存储库,允许我执行SQL并将结果自动解析为一个对象。
发布于 2016-02-04 21:12:36
基本上,正如@dunni所说,您可以使用JdbcTemplate和自己的映射程序将SQL结果转换为Java:
public CustomResult getCustomResult(){
final String complexSql = "SELECT SUM(distance) as distanceSum....";
final CustomResult customResult = (CustomResult) jdbcTemplate.queryForObject(complexSql, new CustomResultRowMapper());
return customResult;
}
public class CustomResultRowMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
CustomResult customResult = new CustomResult();
customResult.setDistanceSum(rs.getInt("distanceSum"));
...
return customResult;
}
}同样,在Spring中,您不需要做任何事情,只需将jdbcTemplate添加到Dao类:
@Autowired
private JdbcTemplate jdbcTemplate;https://stackoverflow.com/questions/35208078
复制相似问题