我如何创build一个使用hibernate注释的外键约束?
我正在尝试使用hibernate注释为我的数据库表编写模型类。
我有两个表,每个都有一个主键用户和问题。
@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作为上述两个表中的外键。
但我无法find如何在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
不是适当的注释。 您不希望将整个用户或问题存储在列中。 你想创build一个实体之间的关联。 首先将“ Questions
重命名为“ Question
,因为实例代表单个问题,而不是几个。 然后创build关联:
@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。
@Join column(name="reference_column_name")
注释可以用于从其他实体引用的属性或类的字段之上。
- Java是否有使用声明?
- hibernateexception:org.hibernate.AnnotationException:没有为实体指定标识符:com..domain.idea.MAE_MFEView
- JPA 2.0 orphanRemoval = true删除Cascade上的VS
- closureshibernate日志logging控制台输出
- 如何强制Hibernate返回date为java.util.Date而不是Timestamp?
- 使用@Query使用hibernate更新spring数据jpa中的布尔值
- 在Hibernate Validator 4.1+中,@NotNull,@NotEmpty和@NotBlank有什么区别?
- Hibernate如何检测实体对象的脏状态?
- hibernate中JOIN和JOIN FETCH的区别