Prasad Parab
Prasad Parab

Reputation: 496

Hibernate not setting foreign constrains

I am developing an application using Spring and Hibernate. Below are my model bean classes:

Employee

@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

My tables get created automatically on the server startup but foreign key constraint in PersonalDetails table is not getting set.

Did I missed anything here?

Upvotes: 1

Views: 43

Answers (1)

Maciej Kowalski
Maciej Kowalski

Reputation: 26522

I think your @OneToOne mapping should be as follows:

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

The cascade attribute is optional, but a good practice.

Upvotes: 1

Related Questions