Hibernate代理ID值

时间:2015-11-04 14:45:47

标签: hibernate jpa

我发现了一些类似问题,但不是这个问题。

对于HibernateProxy实例(延迟加载),可以使@Id带注释的字段包含实际的id值。

我可以在调试器中看到ID已知,并包含在关联的LazyInitializer实现中。但为什么它也没有放在实际实体/代理对象的相应ID字段中?

这样做的唯一方法显然是使用getId()访问器方法和@Access(AccessType.PROPERTY)的精巧技巧。如果可以避免这种情况会很棒。

1 个答案:

答案 0 :(得分:0)

不,这是不可能的,我个人觉得令人困惑的是,只有id在代理中初始化,而其他属性总是为null(即使在代理初始化之后)。

代理的要点是将所有方法调用委托给目标实例(如果使用属性访问,则getId除外)。代理实例本身从不初始化。