java开发中的那些事(2)-------给视图建立主键

原本我想可以更深的挖掘一下这个问题,但是越查感觉东西越多,我的脑子就越混乱,于是我果断的停止了,我还需要一个清晰的头脑以便于接下来的工作,最后还是记录下当前碰到并解决的问题,其它的再慢慢消化吧。


碰到的问题:

在hibernate反向生成oracle视图的过程中,发现hibernate将所有的字段变成一个联合主键,在创建了一个model对象的同时,还建了一个modelID的类,另外因为在当前框架中对数据库表的DAO层查询都是封装起来的,需要model和相应的id来做参数,于是我就纠结了,我发现,我需要给视图建立一个主键...


解决办法:

先不说其他的各种说法,用查到的以下方法,确实暂时解决了当前问题,例:

表stu:字段stuID,stuName,markId;

表mark:字段markID,markNum;

正常创建一个视图的写法:

select or replace view view_stuDetail
as
select s.stuName stuName,m.markNum stuMark 
from stu s,mark m
where s.markId=m.markID

而如果我们要给它加主键的话,改动也是非常小的:

select or replace view view_stuDetail(stuName,stuMark,CONSTRAINT id_pk PRIMARY KEY (stuName) RELY DISABLE NOVALIDATE)
as
select s.stuName stuName,m.markNum stuMark 
from stu s,mark m
where s.markId=m.markID
这样可以看出来了,只是加了一句话的事情,当然,这里只是随便写了两个数据库。


疑惑:

在查看的过程中发现了一下几个观点,也认为挺有道理的:

1、视图没有主键,只是用来查询的,并不用来储存,它的数据都是基表中带过来的;

2、视图没有主键,但是可以加上唯一索引;

那现在加的主键又是什么意思呢,它确实解决了我当前的问题啊



毕竟功力太浅,这方面好多东西欠推敲啊,不过这个当前确实也解决了问题,自然应该有它的道理,暂且记录下吧




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值