Eclipselink有很多关系,没有结果连接表

时间:2012-05-10 18:25:38

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

我有两个实体类的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再次查找实体,但没有什么真正帮助,我在连接表中看不到任何东西,我看不出原因。管理员工和转移没有问题,只是“连接”......你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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