我正在尝试将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
文件