hibernate的视图处理方法有两种,一种是把视图写到数据库中,一种是用hibernate写代码.
后一种对于初学hibernate的我来说.暂时不考虑.就用第一种吧.
第一种根据网上的信息参考,有一种简单的方法是把视图中的某一个键值做为主键在.hbm.xml文件中映射就可以了.实际的数据库视图中是不能设置主键的.
刚好实图中有一个字段可以做为主键,于是很正常就可以把他们显示出来.但是后来因为视图的主键字段不可以用单个字段,要用联合字段做主键映射时.就出现问题了,虽然可以查到相应的记录数目,但单个键不能确定一个记录内容.使得有些记录是一样的.一定要用联合字段做主键.
根据hibernate的说明,也可以用联合主键,但网上没有一个合适的例子,而且要修改原来的代码.相当麻烦.
既然视图可以用一个字段做主键.那我可以在视图中增加一个自增的字段做为主键.这样就可以实现对视图的查询了.可以怎么样才可以做到这一点呢?网上很多都是用了临时表的.对我的映射文件应该用处不大.
--2005
select row_number() over(order by 字段),* from 视图
--2000
select identity(int,1,1) as id,* into # from 视图
or
select id=(select sum(1) from 表 where 主键字段 <tb.主键字段),* from 视图
有用的就最后一种格式了.通过增加字段后完成,但关键的是主键字段是如何确定,特别是联合主键怎么写?
where aa+ '_ '+bb+ '_ '+cc <=a.aa+ '_ '+a.bb+ '_ '+a.cc,后来这个格式可以完成联合主键.aa,bb,cc三个字段做为视图的联合主键.如果是整型字段还要转换成字符型的.
这样增加了一个字段之后.hibernate就可以使用表一样来使用视图了,只是不能修改内容.但对于查询来说是足够了.
参考网页:http://www.khgl.cn/html/37/n-186837.html