原来看hibernate的书时,书上都提到hibernate在延迟加载一个对象时,是生成该对象的一个代理对象。之后如果是读取该对象的id,由于id已经存在,所以直接返回id,只有在读取其他属性时,hibernate才会到数据库里加载该对象。
上午看了一篇文章《EJB 3.0 Annotations with Hibernate Lazy Loading》,里面说到当在field上配置@Id时,如:
此时调用getId()也会加载该对象。
要解决这个问题,需要把@Id注解添加到getter方法上。如:
同时,该文档还提到,hibernate不支持混合field注解和getter方法注解,只能选择其中的一种方式。且如果使用了getter方法注解,该类还必须提供setter方法。
以上内容未经验证,只是阅读之后的记录。