在 Java 中检索 MySQL 自动递增

retrieve MySQL auto increment in Java

我正在尝试从数据库中检索 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);
    }
}

数据库:

错误:

编辑 - 患者:

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;
    }
}

好像Patient没有属性idPatient。检查一下

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

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

尝试改变你的sql:

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

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