gpt4 book ai didi

java - 如何使用 Hibernate 注释标记外键约束?

转载 作者:IT老高 更新时间:2023-10-28 13:51:45 27 4
gpt4 key购买 nike

我正在尝试使用 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,因为一个实例代表一个问题,而不是多个问题。然后创建关联:

@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 documentation解释说。阅读。并阅读注释的javadoc。

关于java - 如何使用 Hibernate 注释标记外键约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com