0

我将 EclipseLink(JPA 2.0) 与 MySql 一起使用,但我在模型中遇到了问题。我有 2 个实体:Delincuente、PerfilFisico。他们共享 Delincuente 的 Pk。

数据库工作正常,但是当我插入一个 Delincuente 和 Perfil Fisico 时,我试图显示该 Delincuente 的 PerfilFisico(使用 Delincuente.PerfilFisico。),它只是空的。我检查了数据库中的表格,一切正常。

如果我再次运行系统(我正在 Netbeans 7.2 中开发)并且我咨询了我刚刚在数据库上注册的 Delincuente,它会显示所有字段并且一切都很完美!

有代码:

Delincuente.java

@OneToOne(cascade = CascadeType.ALL, mappedBy = "delincuente")
private PerfilFisico perfilFisico;  

PerfilFisico.java

@JoinColumn(name = "PK_IdDelincuente", referencedColumnName = "PK_Identificacion", insertable = false, updatable = false)
@OneToOne(optional = false)
private Delincuente delincuente;

出了什么问题,我已经阅读了几天,我无法弄清楚问题出在哪里。有小费吗?

正如我所说,它可以工作,但是当您运行它并注册一个新的 Delincuente 时,您必须重新运行系统才能成功完成咨询并查看 PerfilFisico

4

1 回答 1

1

JPA EntityManagers 有一个用于托管实体的一级缓存,而像 EclipseLink 这样的提供程序有一个二级缓存。因此,如果您不维护双向映射的两侧,因此它们与数据库不同步,除非您强制刷新、清除缓存或重新启动,否则它不会显示。该应用程序必须保持双向关系,JPA 不会为您做这件事,因为它们是 pojos。

于 2013-04-22T11:55:02.570 回答