我刚进入休眠状态,@ 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层。
根据您的问题-如果您在同一“会话”中执行此操作,则将其添加到getCompany
和em.refresh(company);
行之间的find
return
中。
关于java - Hibernate @ManyToOne Collection不会即时更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38778275/