我正在尝试将Java应用程序连接到现有数据库。
该数据库包含具有1 Graad和Locatie的Personen。 Graad.graadNumeriek是Graad的主键,而Locatie具有自动生成的主键。

我的目标是归还所有Personen,包括Graad和Locatie。

但是,当我运行错误时,出现以下错误:

Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'GRAAD_GraadNummeriek'.
Error Code: 207
Call: SELECT PersoonId, Achternaam, BackupTelefoon, Email, GeboorteDatum, Geslacht, RijksregisterNummer, Score, TelefoonNr, VerwachteDagen, Voornaam, GRAAD_GraadNummeriek, LOCATIE_LocatieId FROM Persoon
Query: ReadAllQuery(name="Persoon.getAllePersonen" referenceClass=Persoon sql="SELECT PersoonId, Achternaam, BackupTelefoon, Email, GeboorteDatum, Geslacht, RijksregisterNummer, Score, TelefoonNr, VerwachteDagen, Voornaam, GRAAD_GraadNummeriek, LOCATIE_LocatieId FROM Persoon")


我的猜测是这与SQL在Persoon中寻找Graad_graadNumeriek有关,而不是使用键。

Persoon

@Entity
@Table(name = "Persoon")
@NamedQueries({
    @NamedQuery(name = "Persoon.getAllePersonen",
            query = "SELECT p FROM Persoon p"),
    @NamedQuery(name = "Persoon.findByName",
            query = "SELECT p FROM Persoon p WHERE p.achternaam = :persoonNaam OR p.voornaam = :persoonNaam")
})

public class Persoon implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "PersoonId")
    int id;
    @Column(name = "Voornaam")
    private String voornaam;
    @Column(name = "Achternaam")
    private String achternaam;
    @Transient
    private SimpleStringProperty voornaamProperty = new SimpleStringProperty();
    @Transient
    private SimpleStringProperty achternaamProperty = new SimpleStringProperty();
    @Column(name = "GeboorteDatum")
    private String geboorteDatum;
    @Column(name = "Geslacht")
    private char geslacht;
    @Column(name = "Email")
    private String email;
    @Transient
    private String emailOuders;
    @Column(name = "RijksregisterNummer")
    private String rijksregisternummer;
    @OneToOne
    private Locatie locatie;
    @Column(name = "TelefoonNr")
    private String telefoonNummer;
    @Column(name = "BackupTelefoon")
    private String backupTelefoon;
    @ManyToOne
    private Graad graad;
    @Transient
    private SimpleStringProperty graadString = new SimpleStringProperty();
    @Column(name = "VerwachteDagen")
    private Integer verwachteDagen;
    @Transient
    private SimpleStringProperty rol = new SimpleStringProperty();
    @Column(name = "Score")
    private int score;

    public Persoon() {
    }


格拉德

@Entity
public class Graad implements Serializable {
    @Id
    @Column(name = "GraadNummeriek")
    protected String graadNumeriek;
    @Column(name = "Niveau")
    protected String niveau;
    @Column(name = "FotoURL")
    protected String fotoUrl;

    public Graad() {
    }

最佳答案

您必须在@JoinColumn(name="joinedColumnName")中的Graad属性中添加Persoon class
并添加:
@OneToMany(mappedBy = "graad") private List<Persoon> persoons=new ArrayList<>();Graad文件

09-13 02:06