【问题标题】:Eclipselink many to many relationship, no result in join-tableEclipselink多对多关系,没有连接表
【发布时间】:2012-05-19 09:11:39
【问题描述】:

我的 java ee 项目有两个实体类:Employee 和 Shift,它们之间存在多对多的关系。它看起来像这样:

@Entity public class Employee implements Serializable { @ManyToMany(mappedBy="employees") private List shifts; private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String surname; private String firstname;

...



    @Entity

    public class Shift implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date timeStart;
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date timeEnd;
    private int workers;
    private int overseers;
    @ManyToMany
    private List employees;

我有一个 JSF 页面,我想将员工(一个一个)添加到选定的班次,所以在我的支持 bean 中有这个方法:



    public void addToShift(Employee e){
            selectedShift.addEmployee(e);
            e.addShift(selectedShift);      
    }

调用该方法后,我在连接表中看不到任何内容。我尝试了一些事情,比如使用 entitymanager.find 再次查找实体,但没有任何帮助,我在连接表中看不到任何内容,我不明白为什么。管理员工和轮班没有问题,“只是”连接......你有什么想法吗?

【问题讨论】:

    标签: jakarta-ee jpa many-to-many eclipselink


    【解决方案1】:

    仅仅为分离的实体设置值是不够的。您仍然需要在事务中调用EntityManager.merge。然后在提交事务(或刷新实体管理器)之后,您也会在数据库中看到结果。

    当持久性上下文仍然打开时(在你的情况下不是这样),单独刷新就足够了,不需要合并。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2014-09-20
      • 1970-01-01
      • 2019-08-22
      相关资源
      最近更新 更多