Java SQL数据库返回数据类型对象的结果

Java SQL数据库返回数据类型对象的结果,java,sql,database,spring,hibernate,Java,Sql,Database,Spring,Hibernate,Iam正在查询H2数据库,我得到了Object类型的结果列表,但我无法将其转换为正确的格式: 我从中查询的我的视图表: Iam从java程序内部进行查询,我得到的结果是: 这是表中的20个对象。我试过串和串,但都不行,我该怎么办?我的目标是把所有这些点列在一个列表中 具有查询方法的接口类: public interface MeasurementRepository extends CrudRepository<Measurement, Long> { @Query(value =

Iam正在查询H2数据库,我得到了Object类型的结果列表,但我无法将其转换为正确的格式:

我从中查询的我的视图表:

Iam从java程序内部进行查询,我得到的结果是:

这是表中的20个对象。我试过串和串,但都不行,我该怎么办?我的目标是把所有这些点列在一个列表中

具有查询方法的接口类:

public interface MeasurementRepository extends CrudRepository<Measurement, Long> {

@Query(value = "SELECT \n" +
        "    measurement_point.date\n" +
        "    , measurement_point.f1\n" +
        "    , measurement_point.precison\n" +
        "    , measurement_point.recall\n" +
        "FROM measurement \n" +
        "LEFT JOIN measurement_data_points ON measurement.id = measurement_data_points.measurement_id\n" +
        "LEFT JOIN measurement_point ON measurement_data_points.data_points_id = measurement_point.id WHERE name='identifiedNeed';", nativeQuery = true)
List<Double> findAllMeasurementDataPoints();
我现在得到的新结果:

[MeasurementPoint{f1=0.3, precison=0.5, recall=0.2, date='2017-11-19'}, MeasurementPoint{f1=0.7, precison=0.4, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.5, precison=0.3, recall=0.1, date='2017-11-15'}, MeasurementPoint{f1=0.6, precison=0.2, recall=0.05, date='2017-11-18'}, MeasurementPoint{f1=0.1, precison=0.2, recall=0.05, date='2017-11-13'}, MeasurementPoint{f1=0.2, precison=0.2, recall=0.05, date='2017-11-14'}, MeasurementPoint{f1=0.4, precison=0.2, recall=0.05, date='2017-11-16'}, MeasurementPoint{f1=0.2, precison=0.4, recall=0.2, date='2017-11-19'}, MeasurementPoint{f1=0.4, precison=0.3, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.5, precison=0.2, recall=0.1, date='2017-11-15'}, MeasurementPoint{f1=0.6, precison=0.1, recall=0.05, date='2017-11-18'}, MeasurementPoint{f1=0.65, precison=0.1, recall=0.05, date='2017-11-13'}, MeasurementPoint{f1=0.77, precison=0.1, recall=0.05, date='2017-11-14'}, MeasurementPoint{f1=0.8, precison=0.1, recall=0.05, date='2017-11-16'}, MeasurementPoint{f1=0.1, precison=0.4, recall=0.2, date='2017-11-19'}, MeasurementPoint{f1=0.4, precison=0.3, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.3, precison=0.2, recall=0.1, date='2017-11-15'}, MeasurementPoint{f1=0.2, precison=0.1, recall=0.05, date='2017-11-13'}, MeasurementPoint{f1=0.5, precison=0.2, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.6, precison=0.3, recall=0.2, date='2017-11-11'}]

包括如何获取数据的代码。我认为这样做是不可行的
MeasurementRepository
不适合使用此方法。在这个存储库中,Spring知道如何将值映射到
Measurement
对象。可能您可以手动解析一个
列表
,但这仍然是一个非常糟糕的地方。rs和rowNumber变量是随方法提供的还是我必须创建的以及如何创建的?您只需要实现一个
RowMapper
接口并提取数据。下面是链接:JdbcTemplate是否正确自动连接?或者为空?我如何检查?我在新编辑器中添加了错误点,您可以使用调试器。只需设置一个断点,执行就会在那里暂停。
public interface MeasurementRepository extends CrudRepository<Measurement, Long> {

@Query(value = "SELECT \n" +
        "    measurement_point.date\n" +
        "    , measurement_point.f1\n" +
        "    , measurement_point.precison\n" +
        "    , measurement_point.recall\n" +
        "FROM measurement \n" +
        "LEFT JOIN measurement_data_points ON measurement.id = measurement_data_points.measurement_id\n" +
        "LEFT JOIN measurement_point ON measurement_data_points.data_points_id = measurement_point.id WHERE name='identifiedNeed';", nativeQuery = true)
List<Double> findAllMeasurementDataPoints();
public class DatabaseQueries {


@Autowired
JdbcTemplate jdbcTemplate;

public List<MeasurementPoint> findAllNeedDataPoints() {

    List<MeasurementPoint> needStatementDataPoints = new ArrayList<>();

    String query="SELECT  measurement_point.date,measurement_point.f1, measurement_point.precison, measurement_point.recall\n" +
            "FROM measurement \n" +
            "LEFT JOIN measurement_data_points ON measurement.id = measurement_data_points.measurement_id\n" +
            "LEFT JOIN measurement_point ON measurement_data_points.data_points_id = measurement_point.id;";

    List<Map<String, Object>> rows=jdbcTemplate.queryForList(query);
    for(java.util.Map<String, Object> row :rows) {
        MeasurementPoint measurementPoint = new MeasurementPoint();
        measurementPoint.setDate((String)(row.get("DATE")));
        measurementPoint.setF1((Double)(row.get("F1")));
        measurementPoint.setPrecison((Double)(row.get("PRECISON")));
        measurementPoint.setRecall((Double)(row.get("RECALL")));
        needStatementDataPoints.add(measurementPoint);
    }
    return needStatementDataPoints;
}
List<Map<String, Object>> rows=jdbcTemplate.queryForList(query);
[com.ibm.fk.textanalys.MeasurementPoint@58e52b28, com.ibm.fk.textanalys.MeasurementPoint@fa8c696, com.ibm.fk.textanalys.MeasurementPoint@5b06cf3c, com.ibm.fk.textanalys.MeasurementPoint@3d89bc9e, com.ibm.fk.textanalys.MeasurementPoint@4cc46c6c, com.ibm.fk.textanalys.MeasurementPoint@5919f14, com.ibm.fk.textanalys.MeasurementPoint@6883cfb5, com.ibm.fk.textanalys.MeasurementPoint@189ee377, com.ibm.fk.textanalys.MeasurementPoint@77d64b04, com.ibm.fk.textanalys.MeasurementPoint@7e3603d5, com.ibm.fk.textanalys.MeasurementPoint@8be95c1, com.ibm.fk.textanalys.MeasurementPoint@67d44afa, com.ibm.fk.textanalys.MeasurementPoint@221fb36f, com.ibm.fk.textanalys.MeasurementPoint@6cf92452, com.ibm.fk.textanalys.MeasurementPoint@1015a491, com.ibm.fk.textanalys.MeasurementPoint@55d3aff3, com.ibm.fk.textanalys.MeasurementPoint@a08faed, com.ibm.fk.textanalys.MeasurementPoint@2f76844a, com.ibm.fk.textanalys.MeasurementPoint@127a9c19, com.ibm.fk.textanalys.MeasurementPoint@5a9e0592]
[MeasurementPoint{f1=0.3, precison=0.5, recall=0.2, date='2017-11-19'}, MeasurementPoint{f1=0.7, precison=0.4, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.5, precison=0.3, recall=0.1, date='2017-11-15'}, MeasurementPoint{f1=0.6, precison=0.2, recall=0.05, date='2017-11-18'}, MeasurementPoint{f1=0.1, precison=0.2, recall=0.05, date='2017-11-13'}, MeasurementPoint{f1=0.2, precison=0.2, recall=0.05, date='2017-11-14'}, MeasurementPoint{f1=0.4, precison=0.2, recall=0.05, date='2017-11-16'}, MeasurementPoint{f1=0.2, precison=0.4, recall=0.2, date='2017-11-19'}, MeasurementPoint{f1=0.4, precison=0.3, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.5, precison=0.2, recall=0.1, date='2017-11-15'}, MeasurementPoint{f1=0.6, precison=0.1, recall=0.05, date='2017-11-18'}, MeasurementPoint{f1=0.65, precison=0.1, recall=0.05, date='2017-11-13'}, MeasurementPoint{f1=0.77, precison=0.1, recall=0.05, date='2017-11-14'}, MeasurementPoint{f1=0.8, precison=0.1, recall=0.05, date='2017-11-16'}, MeasurementPoint{f1=0.1, precison=0.4, recall=0.2, date='2017-11-19'}, MeasurementPoint{f1=0.4, precison=0.3, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.3, precison=0.2, recall=0.1, date='2017-11-15'}, MeasurementPoint{f1=0.2, precison=0.1, recall=0.05, date='2017-11-13'}, MeasurementPoint{f1=0.5, precison=0.2, recall=0.15, date='2017-11-12'}, MeasurementPoint{f1=0.6, precison=0.3, recall=0.2, date='2017-11-11'}]
public interface MeasurementRepository extends CrudRepository<Measurement, Long> {

    @Query(value = "SELECT date, f1, precison, recall " +
          "FROM measurement " +
          "LEFT JOIN measurement_data_points ON measurement.id = measurement_data_points.measurement_id " +
          "LEFT JOIN measurement_point ON measurement_data_points.data_points_id = measurement_point.id WHERE name='identifiedNeed';", nativeQuery = true)
    List<Measurement> findAllMeasurementDataPoints();
}
@Service
public class MeasurementRepository {
    @Autowired
    JdbcTemplate template;

    public List<Measurement> findAllMeasurementDataPoints() {
         template.query(your_query, (rs, rowNumber) -> {
              Measurement measurement = new Measurement();
              ... your mapping here ....
              return measurement;
         })
    }