我在MySql中使用EclipseLink(JPA 2.0),但模型中出现问题。
我有2个实体:Delincuente,PerfilFisico。他们共享Delincuente的Pk。

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

如果我再次运行该系统(我在Netbeans 7.2中进行开发)并且咨询了我刚刚在DB上注册的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

最佳答案

JPA EntityManager具有用于托管实体的第一级缓存,而诸如EclipseLink的提供程序具有第二级缓存。因此,如果您不维护双向映射的两面,以免它们与数据库不同步,则除非您强制刷新,清除缓存或重新启动,否则不会显示该映射。该应用程序必须保持双向关系,JPA不会为您做到,因为它们本来就是pojos。

10-04 18:56