Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数据库中的JPA外键,返回项目中的对象_Java_Sql Server_Jpa_Netbeans - Fatal编程技术网

Java 数据库中的JPA外键,返回项目中的对象

Java 数据库中的JPA外键,返回项目中的对象,java,sql-server,jpa,netbeans,Java,Sql Server,Jpa,Netbeans,我正在尝试将Java应用程序连接到现有数据库。 数据库包含Personen,他有1个Graad和Locatie。Graad.graadNumeriek是Graad的主键,Locatie具有自动生成的主键 我的目标是回报所有人,包括他们的格拉德和洛卡蒂 但是,当我运行我的错误时,我得到以下错误: Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'GRAAD_GraadN

我正在尝试将Java应用程序连接到现有数据库。 数据库包含Personen,他有1个Graad和Locatie。Graad.graadNumeriek是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() {
    }
Graad

@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指定指向Graad的列,JPA无法猜测您试图加入的列

您必须将
@JoinColumn(name=“joinedColumnName”)
添加到
Persoon类中的
Graad
属性中 并添加:
@OneToMany(mappedBy=“graad”)
private List persoons=new ArrayList();
Graad
文件