相关疑难解决方法(0)

Hibernate @OneToMany与mappedBy(父子)关系和缓存问题

我有这个问题已经有很长一段时间了,我已经在网上搜索了SO而且还没有找到解决方案.我希望你能帮助我.

我在两个实体之间有一个父子关系,如下所示:

@Entity
public class Parent {
    // ...

    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
    private Set<Child> children = new HashSet<Child>();

    // ...
}

@Entity
public class Child {
    // ...

    @ManyToOne(fetch = FetchType.LAZY)
    private Parent parent;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

问题在于,当我创建一个新子节点并将其分配给父节点时,父节点在缓存中时不会更新.

 Parent parent = new Parent();
 em.persist(parent);

 // ...

 Child child = new Child();
 child.setParent(parent);
 em.persist(child);

 parent.getChildren().size(); // returns 0
Run Code Online (Sandbox Code Playgroud)

当孩子被持久化时,我曾尝试使用@PreUpdate自动将子项添加到父项,但是当我们在2个不同的线程中有2个实体管理器时(比如JBoss),问题仍然存在,直到我们调用 em.refresh(parent)

所以问题是 - 有没有办法顺利消除问题并确保parent.getChildren()始终返回最新的儿童名单?

persistence caching hibernate parent-child one-to-many

8
推荐指数
1
解决办法
3万
查看次数

JPA映射关系实体parentID

有人可以帮助我理解如何定义一个与自身有关系的JPA映射实体?

例如,我的实体是CompanyDivision,divisionA包含divisionB,divisionC和divisionB包含divisionB1,divisionB2

  • divisionA
    • divisionB
      • divisionB1
      • divisionB2
    • divisionC

谢谢!

entity jpa map parentid relation

0
推荐指数
1
解决办法
1734
查看次数