首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA 2中的OneToMany关系

JPA 2中的OneToMany关系
EN

Stack Overflow用户
提问于 2014-07-21 13:57:52
回答 3查看 241关注 0票数 1

我一直在学习JPA 2,并了解了OneToMany和ManyToOne的关系。这是我的标准。

  1. 有两个实体,雇员和反馈。
  2. 员工可以收到多个反馈。也就是说,反馈和员工之间存在着ManyToOne关系。我已经做到了这一点。
  3. 但是,员工也可以为多名员工编写多个反馈。这就是我被困的地方。

我已经建立了员工反馈关系如下。

反馈类

代码语言:javascript
复制
    @ManyToOne
@JoinColumn(name="idEmployee")
private Employee employee;

在员工课上,

代码语言:javascript
复制
@OneToMany(mappedBy = "employee", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Feedback> feedbacks = new ArrayList<Feedback>();

现在我可以检索员工收到的所有反馈信息。但是,员工也可以给其他员工反馈。我怎样才能实现这种关系?

我需要使用地图关系吗?如果是,那为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-22 06:38:26

您需要另一个OneToMany关系:确保db表中的两个列表示Feedbackauthorreceivee:它们将指向employee表的主键,因此它们必须具有与此相同的类型。添加外键约束:这两个约束都应该指向employee表的主键。然后,映射Java中的关系,如zbigniew的答案所解释的:

反馈类:

代码语言:javascript
复制
@ManyToOne
@JoinColumn(name="author")
private Employee author;

@ManyToOne
@JoinColumn(name="receivee")
private Employee receivee;

雇员类:

代码语言:javascript
复制
@OneToMany(mappedBy = "author", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Feedback> givenFeedbacks;
@OneToMany(mappedBy = "receivee", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Feedback> receivedFeedbacks;
票数 3
EN

Stack Overflow用户

发布于 2014-07-21 18:52:37

正如我正确理解的那样,这两张表之间存在着多对多的关系。您应该使用@ManyToMany进行注释,或者有一个桥接表,以便桥表与FeedBack有多对一的关系,与员工有多对一的关系。我更倾向于第二种方法,因为这尊重数据库设计的NF3。

Persistence/ManyToMany

form

票数 2
EN

Stack Overflow用户

发布于 2014-07-21 14:32:05

从反馈是与两类员工相关的事实开始分析--一种是反馈的作者,另一种是收到反馈。在那之后,一切都是这样建立起来的。

代码语言:javascript
复制
@Entity
class Feedback {
    // id etc ...

    @ManyToOne
    Employee author;

    @ManyToOne
    Employee receivee;
}

@Entity
class Employee {
    // id etc ...

    @OneToMany(mappedBy="author")
    List<Feedback> feedbackGiven;

    @OneToMany(mappedBy="receivee")
    List<Feedback> feedbackReceived; 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24866916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档