How can I mark a foreign key constraint using Hibernate annotations? How can I mark a foreign key constraint using Hibernate annotations? java java

How can I mark a foreign key constraint using Hibernate annotations?


@Column is not the appropriate annotation. You don't want to store a whole User or Question in a column. You want to create an association between the entities. Start by renaming Questions to Question, since an instance represents a single question, and not several ones. Then create the association:

@Entity@Table(name = "UserAnswer")public class UserAnswer {    // this entity needs an ID:    @Id    @Column(name="useranswer_id")    @GeneratedValue(strategy = GenerationType.AUTO)    private Long id;    @ManyToOne    @JoinColumn(name = "user_id")    private User user;    @ManyToOne    @JoinColumn(name = "question_id")    private Question question;    @Column(name = "response")    private String response;    //getter and setter }

The Hibernate documentation explains that. Read it. And also read the javadoc of the annotations.


There are many answers and all are correct as well. But unfortunately none of them have a clear explanation.

The following works for a non-primary key mapping as well.

Let's say we have parent table A with column 1and another table, B, with column 2 which references column 1:

@ManyToOne@JoinColumn(name = "TableBColumn", referencedColumnName = "TableAColumn")private TableA session_UserName;

Enter image description here

@ManyToOne@JoinColumn(name = "bok_aut_id", referencedColumnName = "aut_id")private Author bok_aut_id;


@JoinColumn(name="reference_column_name") annotation can be used above that property or field of class that is being referenced from some other entity.