日期:2014-05-16  浏览次数:20399 次

Hibernate使用中从数据库到模型的加载方式研究

? 在项目中数据库中账单Bill一个字段是有多个订单id的以逗号分隔的字符串,DAO采用HQL查询出来之后,获取订单的id集合,本人开始认为hibernate从数据库加载到模型中,会调用setXXX()方法,在setXXX中进行相应的,字符串分隔,但是我的想法错误,使用Struts2.0 在页面OGNL获取获取不到分隔后订单id集合数据。本人甚为郁闷。甚至在debug模式下在setXXX打了断点,调试,果然不执行。没有方法,在Bill中添加一个方法,每次调用此方法获取集合,居然可以获取数据。本人不解。

?

?在网上查看一下文档。

????? 网上有人说:

????????? Hibernate 既可以访问Field也可以访问Property,访问Property是只是调用getXXX()、setXXX()方法,因此在from Customer where c.name=’Tom’ HQL中,name属性不需要存在,只要getName()存在就可以了。

本人多次实践发现:

??????? hibernate从数据库加载数据到Model时不调用相应setXXX方法,仅仅调用相应的属性.难道在Model中private属性,使用反射强制访问了吗,也只有这种情况下,相应的setXXX方法不会执行,(这种通过反射强制赋值的手段可能在某些情况很使用) 难道真是这样吗?希望牛人指点,不要拍砖,更希望各位朋友交流心得。

1 楼 shuang_snowgirl 2010-12-15  
好像是这样:
注解标记在 field上就访问field
标记在 property上就访问 property