EntityManager的getReference不是延迟加载

时间:2012-09-21 09:42:42

标签: eclipse jpa persistence

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

当我需要完成此操作时,我通常会使用EntityManager的 find 方法,但这会触及数据库并获取整个实体以及可能无法为延迟加载注释的关系。我很高兴找到关于 getReference 的内容,它通常不会访问数据库,而是返回一个代理表示,其中只有主键可用,而这正是这种情况所需的全部内容。

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

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

提前致谢

1 个答案:

答案 0 :(得分:0)

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