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、视图没有主键,但是可以加上唯一索引;

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

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

时间: 2024-10-10 09:27:33

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

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"

java开发中的那些事(3)-------最常用到的几个快捷键

今天去看了韩寒的<后会无期>,感慨颇多. 这里记录下现在常会用到的几个快捷键,不多,却是当前最常用到: 1.ctrl+f  ----------------"搜索", 这个应该在大多数人来说都太简单了,可惜我也是知道不长时间: 2.ctrl+shift+r  --------"工程内搜索",这个也是搜索,不过是搜索整个工程的,这个知道后美滋滋了好久: 3.ctrl+/  ----------------"简单注释","//&

java开发中的那些事(6)------一次ajax调用中的问题

这个周末就要到这次开发任务的结尾了,不过也到这时候了,才发现用起来比较顺手了,前几次项目中也有过啊,说起来实实在在用过的才3个项目,就分别用了不同的,着实有些痛苦啊,初学阶段的jsp+servlet还算是初学,可这后面的loushang和ssh2是让我欢喜让我忧啊,高兴的是框架的魅力让我情不自禁,可这样的框架我啥时候才能自己组的那么完善,甚至现在用起来还磕磕绊绊的.总结下这次的大收获的话,一方面是这个框架,另一方面的话就是ajax和json了,这个在我来说是比较陌生的地方,虽然现在我可以用,但原

java开发中的那些事(1)-------关于ORA00604和ORA12705

******************************有关myEclipse和oracle连接中出现的一个问题********************************* 界面拿给用户提意见,然后又是修修改改,总算是审批通过,下一步就要开始编码了,结果一出手就碰到了问题,先来展示一下问题所在: 在hibernate反向生成的时候,突然蹦出了这两个异常提示ORA-00604和ORA12705,让我很是纠结,然而其实在这之前还蹦出来Driver can't find的异常,然后我们来分析

java开发中的那些事(4)-------没完没了的time of error

今天心情有些郁闷啊,一个空指针折磨了一下午,到现在还没有解决,结果把高手找来也没弄了,还得继续自己琢磨,再一点点改一点点找吧,可是现在不想搞了,准备回家,白白浪费这一个多小时,在这之前把另一个同时在折磨自己的一个问题的解决给记录下,感觉还挺有用. 问题展示: 就这么个弹出框,改动MyEclipse文件后,无论保存还是修改,都在疯狂的弹出,没完没了的出现,一度让我抓狂啊. 问题原因: 不详 记得之前也出现过一次,是高手当时顺手就给解决了,这次也不知道为什么,想造这种情况还不知道如何下手:网上看到几

java web开发中的奇葩事web.xml中context-param中的注释

同事提交了代码.结果除同事之外,其他人全部编译报错.报错说web.xml中配置的一个bean 没有定义.按照报错提示,各种找,无果. 由于代码全部都是提交到svn主干,之前也没有做过备份,只能一步一步删除同事提交的代码,进行还原. 奇葩事情出现了! <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/context_entry.xml

java开发中使用的工厂设计模式

package gongchangdemo; /* * 在java开发中使用较多的一种设计模式:工厂模式:就是一个过渡端 * 通过过度端来取得接口的实例化对象,这个过渡端就称为工厂factory * 这个模式主要是为了解决修改子类,必须要修改main方法,而main方法主要是客户端,客户端 * 经常变来变去不太好,就引进:工厂模式 */ public class gongchangdemo { public static void main(String args[]) { //getinsta

完整java开发中JDBC连接数据库代码和步骤

完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(Class

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f