检索Java

时间:2016-05-26 11:45:49

标签: java mysql jdbc sql2o

我正在尝试从数据库中检索idPatient,但我一直收到错误,idPatient是自动增量。但我不知道这是不是造成这个问题的原因。

这是我正在尝试的代码

public List<Patient> getPatientsFromDatabase() {
    String sql = "SELECT naam, voornaam, gebit, idPatient from patienten";
    try (Connection con = sql2o.open()) {
        return con.createQuery(sql)
                .throwOnMappingFailure(false)
                .executeAndFetch(Patient.class);
    }
}

DB:

enter image description here

错误:

enter image description here

编辑 - 患者:

public Patient(String voornaam, String naam, String gebit, int id) {
    this.voornaam = voornaam;
    this.naam = naam;
    this.id = id;
    if (null != gebit)switch (gebit) {
        case "melkgebit":
            g = new Melkgebit();
            this.gebit = "melkgebit";
            break;
        case "volwassengebit":
            g = new Volwassengebit();
            this.gebit = "volwassengebit";
            break;
        case "wisselgebit":
            this.gebit = "wisselgebit";
            break;
        default:
            break;
    }
}

2 个答案:

答案 0 :(得分:2)

似乎Patient没有属性idPatient。检查

答案 1 :(得分:1)

列和属性之间的映射是按名称自动完成的。当然,这并不总是可行的

在您的情况下,您已将id(java属性)定义为idPatient(数据库表中的相应列)。 最简单的解决方案是在SQL查询中使用别名。

尝试更改您的sql:

SELECT naam, voornaam, gebit, idPatient id from patienten;

有关详细信息,请访问http://www.sql2o.org/docs/column-mappings/