JPA: Столбец не тот же тип данных, что и столбец ссылки - PullRequest
0 голосов
/ 21 мая 2019

При попытке запустить мое приложение я заметил, что ничего не загружается.Оказывается, я получаю ошибку Column 'Graad.GraadNumeriek' is not the same data type as referencing column 'Persoon.GraadNumeriek' in foreign key 'Persoon_GraadNumeriek'., которой раньше не было.

Понятия не имею, что является причиной проблемы, поскольку я использую тот же принцип с Locatie, и он работает нормально.

Этот класс называется ClubPersoon вместо Persoon, поскольку 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;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...