hibernate使用annotation配置时将@Id配置到字段field上和get方法上的区别
2010-07-13 18:18
489 查看
原来看hibernate的书时,书上都提到hibernate在延迟加载一个对象时,是生成该对象的一个代理对象。之后如果是读取该对象的id,由于id已经存在,所以直接返回id,只有在读取其他属性时,hibernate才会到数据库里加载该对象。
上午看了一篇文章《EJB 3.0 Annotations with Hibernate Lazy Loading》,里面说到当在field上配置@Id时,如:
此时调用getId()也会加载该对象。
要解决这个问题,需要把@Id注解添加到getter方法上。如:
同时,该文档还提到,hibernate不支持混合field注解和getter方法注解,只能选择其中的一种方式。且如果使用了getter方法注解,该类还必须提供setter方法。
以上内容未经验证,只是阅读之后的记录。
上午看了一篇文章《EJB 3.0 Annotations with Hibernate Lazy Loading》,里面说到当在field上配置@Id时,如:
@Entity public class Address { @Id @GeneratedValue private long id; private String town; public long getId() { return this.id; } public String getTown() { return this.town; } }
此时调用getId()也会加载该对象。
要解决这个问题,需要把@Id注解添加到getter方法上。如:
@Entity public class Address { private long id; private String town; @Id @GeneratedValue public long getId() { return this.id; } public String getTown() { return this.town; } }
同时,该文档还提到,hibernate不支持混合field注解和getter方法注解,只能选择其中的一种方式。且如果使用了getter方法注解,该类还必须提供setter方法。
以上内容未经验证,只是阅读之后的记录。
相关文章推荐
- Hibernate中get()与load()的区别,以及关于ThreadLocal的使用方法
- 使用Hibernate时,Session的get()方法和load()方法的区别?
- hibernate中使用session对象获得持久化对象get和load方法的区别
- 在Eclipse中配置及使用Hibernate插件的方法说明(HibernateSynchronizer)
- Hibernate中get和load方法的区别
- Hibernate get 和 load方法区别
- cin cin.get() cin.getline() string类成员函数getline(cin,str)使用方法区别与联系
- 使用Annotation编写Entity减少Spring,hibernate配置。
- Hibernate中get方法和load方法的区别
- getHibernateTemplate()与getSession()方法的区别
- Hibernate中get()和load()方法的区别
- Hibernate 3.0 以上版本 中get和load方法的区别
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- Hibernate—get()和load()方法的区别
- Hibernate中get和load方法的区别
- hibernate中get方法和load方法的区别
- Hibernate中get和load方法的区别详解
- hibernate4与3使用annotation在配置文件中的区别
- hibernate对象关系映射“之”延迟加载之get、load方法的区别
- Hibernate中get和load方法的区别