我发现了一些类似问题,但不是这个问题。
对于HibernateProxy实例(延迟加载),可以使@Id带注释的字段包含实际的id值。
我可以在调试器中看到ID已知,并包含在关联的LazyInitializer实现中。但为什么它也没有放在实际实体/代理对象的相应ID字段中?
这样做的唯一方法显然是使用getId()访问器方法和@Access(AccessType.PROPERTY)的精巧技巧。如果可以避免这种情况会很棒。
答案 0 :(得分:0)
不,这是不可能的,我个人觉得令人困惑的是,只有id在代理中初始化,而其他属性总是为null(即使在代理初始化之后)。
代理的要点是将所有方法调用委托给目标实例(如果使用属性访问,则getId
除外)。代理实例本身从不初始化。