4

尝试持久化包含成员变量的实体是不可能的,该成员变量是对不在当前持久性上下文中的其他实体的引用,当发生这种情况时,需要获取所需的实体并将其设置在原始实体中尊重这种关系,并被允许坚持下去。

当我需要完成此操作时,我通常会使用 EntityManager 的find方法,但这会访问数据库并获取整个实体以及它的关系,这些关系可能没有为延迟加载进行注释。我很高兴了解getReference,它可能不会访问数据库,而是返回只有主键可用的代理表示,而这实际上是这种情况所需的全部。

不幸的是,经过一些调试后,当我通过 Eclipse 调试模式“检查”它时,我发现自己能够查看有关getReference实体的所有信息,而不仅仅是主键。

我错过了什么吗?我被调试模式欺骗了吗?是否可以像在代理引用上使用 getter 方法一样获取信息?

提前致谢

4

1 回答 1

0

当您使用 Eclipse 调试器检查它时,调试器会初始化代理。只需打开 SQL 日志记录,执行该em.getReference()方法,并验证您的 JPA 引擎没有执行任何选择语句。

于 2012-09-21T09:56:51.043 回答