2016-05-08 2 views
0

Я пытаюсь настроить нашу базу данных в нашем проекте. Но я получаю некоторые ошибки, когда я пытаюсь использовать @ManyToOne и @ OneToMany на @MappedSuperclass Entity:Получение ошибок с @ManyToOne в игре с использованием @MappedSuperclass

@MappedSuperclass 
public abstract class Person extends Model{ 
//public abstract class Person { 

    // ATTRIBUTES 
    @Column(columnDefinition = "varchar(20) not null") 
    private String firstName; 
    @Column(columnDefinition = "varchar(20) not null") 
    private String lastName; 
    @Column(columnDefinition = "varchar(20) not null") 
    private String password; 
    @Column(columnDefinition = "varchar(50) not null") 
    private String eMail; 
    @Column(columnDefinition = "varchar(8) not null") 
    private String svn; 
    private static int staticId = 0; // Identifier, staticId is unique. 
    @Id 
    @Column(columnDefinition = "integer not null") 
    private int id; 
    @Column(columnDefinition = "integer") 
    private int age; 
    @Column(columnDefinition = "varchar(10)") 
    private String telephoneNumber; 
    @Column(columnDefinition = "decimal(10,2)") 
    private double salary; 
    @Column(columnDefinition = "boolean") 
    private boolean allowedOvertime; 
    //@OneToMany(mappedBy = "person") 
    private List<TimeEntryMonth> listTimeEntryMonth; 
    @OneToMany(mappedBy = "person") 
    private List<Vacation> listVacation; 
    @OneToMany(mappedBy = "person") 
    private List<SickLeave> listSickLeave; 

Один из классов, который простирается от лица:

@Entity 
public class Employee extends Person { 

    // ATTRIBUTES 
    private String position; 
    private Boss boss; 

и один из @ OneToMany отношения:

public class SickLeave extends Model { 

    /* ATTRIBUTES */ 
    @Id 
    private int id; 
    @ManyToOne 
    private Person person; 
    private int personIdSL; 
    private String reason; 

Если компилировать весь мой проект без @ManyToOne и @OneToMany, он будет работать нормально. Но с это приведет к ошибкам в сомах:

Ошибка инъекционного конструктор, java.lang.RuntimeException: Ошибка чтение аннотаций для models.SickLeave

Я пытался удалить реферат и заменить @MappedSuperclass с @Entity и работает проект. Поэтому я думаю, что я не могу иметь @OneToMany и @ManyToOne отношения на @MappedSuperclass, но я не хочу реорганизовывать весь мой проект.

Есть ли способ (проще) справиться с такими проблемами?

спасибо.

+0

У вас есть конструктор в коде вообще? Я смотрю на некоторые примеры, и похоже, что вам нужен конструктор ... – ryekayo

+0

Спасибо. Да, каждый класс определил свой собственный конструктор. –

ответ

0

Person не является Entity, поэтому вы не можете использовать OneToMany. Вам нужно будет сделать PersonEntity или указать на Employee, что, по-видимому, имеет для меня больше смысла.

Смежные вопросы