我正在尝试使用Hibernate注释为我的数据库表编写模型类。
我有两个表,每个表都有一个主键User和Question。
@Entity @Table(name="USER") public class User { @Id @Column(name="user_id") @GeneratedValue(strategy=GenerationType.AUTO) private Long id; @Column(name="username") private String username; // Getter and setter }
问题表。
@Entity @Table(name="QUESTION") public class Questions extends BaseEntity{ @Id @Column(name="question_id") @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column(name="question_text") private String question_text; // Getter and setter }
我还有一个表UserAnswer,其中有来自上面两个表的userId和QuestionId作为外键。
但是我无法在UserAnswer表中找到如何引用这些约束的方法。
@Entity @Table(name="UserAnswer ") public class UserAnswer { @Column(name="user_id") private User user; //@ManyToMany @Column(name="question_id") private Questions questions ; @Column(name="response") private String response; // Getter and setter }
我该如何实现?
@Column不是适当的注释。您不想在列中存储整个用户或问题。您要在实体之间创建关联。首先重命名Questions为Question,因为一个实例代表一个问题,而不是多个问题。然后创建关联:
@Column
Questions
Question
@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 }
在Hibernate文档解释了。阅读。并阅读注释的javadoc。