分类信息
各地考试

当前位置:首页 » Java认证 » 专业语言 » 正文

Java开源技术专业语言:关于hibernate对视图的操作的一点心得


时间:2014-04-29 来源:Java认证考试网 浏览次数:405  【华夏培训网:中国教育培训第一门户

网上有人描述的情况跟我一样:  使用MyEclipse hibernate 视图对ORACLE的视图进行映射反向生成,比如对ViewResult视图会生成

         网上有人描述的情况跟我一样:

  使用MyEclipse hibernate 视图对ORACLE的视图进行映射反向生成,比如对ViewResult视图会生成两个类,一个hbm.xml文件,其中两个类名为:ViewResultId和ViewResult  配置文件为ViewResult.hbm.xml.那么使用HibernateTemplate模板类使用find(hql)进行查询的时候,比如 hql="from ViewResult v where v.name='lx'";那么会出现第一个异常

  原因是:视图没有主键,MyEclipse默认生成的是复合主键,即<composite-id><key- property></key-property></composite-id>.id由ViewResult类生成,于是将hql修改为:hql="from ViewResult v where v.id.name='lx'";发现可以进行查询不会报错了,但是却又发现查询的内容为null,这是第二个异常,

  原因为:MyEclipse默认生成的复合主键,<composite=id></composite-id>中间包括了视图所有的属性都为复合主键即<key-property>属性</key-property>,因为查询的记录里面某个字段为null,而主键不能为空,所以导致查询的记录全部都null,修改方法为:将视图中可以作为主键的属性放入<composite- id></composite-id>中,其余的放在外面修改为<property/>,这个时候查询又会出现,缺少 get或者set方法的异常,所以最终的解决方法就是:把视图当成一个表,按hibernate常规思路进行配置即可解决,配置主键生成策略(视图没有主键,但是你可以根据业务需求找出一个可以当做主键的属性值),然后配置属性,这样就可以把视图当成一个实体用hql来查询了。

  还有种说法是说把视图里面所有null的值填个默认值也能解决查询为null的问题。

  所以总结出对视图的操作办法:

  1.把视图当一个表来配置,在视图中找一个合适的字段来当主键就行。

  2.把视图中所有null的字段都默认给个值,这样用myeclipse那种联合主键配置的方式也能查询到数据(此方法在网上查的自己没试)。





        Java认证

推荐图文

热门点击排行

©2015 hxpx.com All Rights Reserved 滇ICP备13002816号-1
华夏培训网唯一网址www.hxpx.com