2017-02-13 16 views
1

Я разрабатываю приложение, используя Spring и Hibernate. Ниже приведены мои модельные классы фасоли:Hibernate не устанавливает внешние ограничения

Сотрудник

@Entity 
@Table(name="employee") 
public class Employee { 
    @Id 
    @Column 
    @GeneratedValue 
    private int empid; 
    @Column 
    private String firstName; 
    @Column 
    private String lastName; 
    @Column 
    private String email; 
    @Column 
    private String password; 
    @Column 
    private boolean isAdmin; 

    @Column 
    private boolean isActive; 

    @Column 
    private boolean isLocked; 

//getter and setter 

PersonalDetails

public class PersonalDetails { 
    @Column 
    @Id 
    private int empid; 
    @Column 
    private String personalEmail; 
    @Column 
    private String mob; 
    @Column 
    private String permenantAdress; 
    @Column 
    private String currentAddress; 
    @Column 
    private String gender; 
    @Column 
    private String maritialStatus; 

    @OneToOne 
    @PrimaryKeyJoinColumn 
    @ForeignKey(name="empid") 
    private Employee employee; 

//getter and setter 

Мои таблицы получить созданные автоматически при старте сервера, но ограничение внешнего ключа в PersonalDetails таблице не получает задавать.

Я пропустил что-нибудь здесь?

ответ

1

Я думаю, что ваше @OneToOne отображения должно быть следующим:

@MapsId 
@OneToOne(cascade = CascadeType.ALL) 
@JoinColumn(name = "empid", referencedColumnName = "empid") 
private Employee employee; 

Атрибут каскада является необязательным, но хорошей практикой.