gpt4 book ai didi

java - Hibernate @ManyToOne Collection 不会动态更新

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:04 26 4
gpt4 key购买 nike

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

最佳答案

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

根据您的问题 - 如果您在同一“ session ”中执行此操作,则在 findreturn 行之间添加到您的 getCompany em.refresh(company);

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com