我刚进入休眠状态,@ ManyToOne不起作用。我有两个DAO类别:

公司DAO

@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>();


员工

@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,但这似乎是一个非常手动的答案,没有更好的方法吗?

最佳答案

很少有澄清。可以说Dao可以节省您的实体。不是实体本身。 @Transactional类似。这不应该在实体级别,而应该在服务或Dao层。

根据您的问题-如果您在同一“会话”中执行此操作,则将其添加到getCompanyem.refresh(company);行之间的find return中。

关于java - Hibernate @ManyToOne Collection不会即时更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38778275/

10-12 06:31