hibernate的实图处理

      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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值