Hibernate @ManyToOne Collection不会动态更新

时间:2016-08-04 22:17:34

标签: java hibernate

我对hibernate很新,而@ManyToOne不起作用。我有两个DAO课程:

CompanyDAO

@Entity
@Transactional
public class CompanyDAO implements Serializable {

  @OneToMany(cascade = { DETACH, MERGE, PERSIST,REFRESH }, 
  fetch = FetchType.EAGER, 
  mappedBy = " companyEmployeeReference ")
  protected Collection< EmployeeDAO> employeeData = new ArrayList<EmployeeDAO>();

EmployeeDAO

@Entity
@Transactional
public class EmployeeDAO implements Serializable {

  @ManyToOne(optional = false)
  private CompanyDAO companyEmployeeReference;

然后我通过

创建一些EmployeeDAO
public EmployeeDAO create(EmployeeDAO o) {
        em.persist(o);
        return o;
    }

然后尝试通过以下方式从公司方面获取此DAO:

public CompanyDAO getCompany(int companyID) {
        CompanyDAO company = em.find(CompanyDAO.class, companyID);
        return company;
    }
它不起作用。找到的公司的employeeData始终为空。

但是,当我在员工创建后停止服务器时。然后在getCompany一切正常之前重新启动它。我已经搜索了几个小时的互联网(包括stackoverflow),但找不到答案。我发现的唯一想法是this,但这似乎是一个非常人工的答案,是不是有更好的方法?

2 个答案:

答案 0 :(得分:0)

很少澄清。含糊地说Dao是拯救你实体的东西。不是实体本身。类似适用于@Transactional。这不应该在实体级别上,而是在Service或Dao层上。

根据您的问题 - 如果您在同一会议期间执行此操作&#34;然后在getCompanyem.refresh(company);行之间添加find return

答案 1 :(得分:0)

我的问题的解决方案是:

em.refresh(company)

em.flush();