在尝试运行我的应用程序时,我没有发现任何负载。事实证明,我遇到了一个Column 'Graad.GraadNumeriek' is not the same data type as referencing column 'Persoon.GraadNumeriek' in foreign key 'Persoon_GraadNumeriek'.
错误,这是我以前从未遇到过的。
我不知道是什么原因导致的问题,因为我对Locatie遵循相同的原理,而且效果很好。
因为Persoon是用于GUI的接口,所以该类称为ClubPersoon而不是Persoon。数据库中的表称为Persoon。
@Entity
@Access(AccessType.PROPERTY)
@Table(name = "Persoon")
@NamedQueries({
@NamedQuery(name = "ClubPersoon.getAllePersonen",
query = "SELECT p FROM ClubPersoon p"),
})
public class ClubPersoon implements Serializable, Persoon {
int id;
private Locatie locatie;
private SimpleStringProperty graadProperty = new SimpleStringProperty();
public ClubPersoon() {
activiteiten = new ArrayList<>();
}
public ClubPersoon(int id, PersoonDTO dto) {
setId(id);
setLocatie(new Locatie(dto.getPostcode(), dto.getAdres(), dto.getStad()));
setGraad(new Graad(dto.getGraad()));
activiteiten = new ArrayList<>();
}
public ClubPersoon(PersoonDTO dto) {
setLocatie(new Locatie(dto.getPostcode(), dto.getAdres(), dto.getStad()));
setGraad(new Graad(dto.getGraad()));
activiteiten = new ArrayList<>();
}
@ManyToOne
@JoinColumn(name = "GraadNumeriek")
@Override
public Graad getGraad() {
return new Graad(graadProperty.get());
}
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "LocatieId")
@Override
public Locatie getLocatie() {
return locatie;
}
public void setLocatie(Locatie locatie) {
this.locatie = locatie;
}
@Override
public SimpleStringProperty graadProperty() {
return this.graadProperty;
}
public void setGraad(Graad graad) {
if (graad != null) {
this.graadProperty.set(graad.graadNumeriek);
} else {
this.graadProperty.set("Geen graad");
}
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PersoonId")
@Override
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Graad
@Entity
@Table(name = "Graad")
public class Graad implements Serializable {
@Id
@Column(name = "GraadNumeriek")
protected String graadNumeriek;
@Column(name = "Niveau")
protected String niveau;
public Graad() {
}
public Graad(String graadNumeriek) {
setGraadNumeriek(graadNumeriek);
setNiveau(GraadUtil.getNiveau(graadNumeriek););
}
public String getGraadNumeriek() {
return graadNumeriek;
}
public void setGraadNumeriek(String graadNumeriek) {
ControleerGraadNumeriek(graadNumeriek);
this.graadNumeriek = graadNumeriek;
}
}