问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hibernate 双属性组合主键的数据表对应两个java文件,请问如何对该表进行数据的增删改查?大神帮忙~

发布网友 发布时间:2022-04-14 15:31

我来回答

1个回答

热心网友 时间:2022-04-14 17:00

我觉得你是没有将两个类的关系搞清楚,并且受了常规思维的影响。

首先,你贴出来的配置文件并不完全,最上边少了一个<class ....>标签此标签表明了这个映射文件配置的是哪个类与数据库中字段的映射关系,分析可知配置的是CheckTable的。

既然这个映射文件要配置CheckTable的属性信息与数据库表中字段的映射关系,那么我们就来看一下CheckTable类中有哪些属性需要配置,我们可以看到有两个,一个是id,另外一个是partScore,那么就配置呗。首先配置主键id,这里我们就需要仔细分析了,这个主键是我们平时常见的id吗?不是,因为它是一个组合主键,那么如何来描述这个组合主键呢?仔细一看发现id的类型是CheckTableId,是一个引用类型,注意了,是一个引用类型!然后顺理成章我们就要看看这个引用类型CheckTableId到底是一个什么东东了!接下来分析CheckTableId这个类,发现这个类中有两个属性tableId和contentId,到这里我们不难想象到原来由于组合主键不好直接配置,所以才将组合主键用一个类(CheckTableId)来描述,到这里我们就发现其实映射文件中<composite-id>标签中配置的就是组合主键的具体信息,这样第一个CheckTable类的第一个属性主键id我们就配置好映射关系了。

至于第二个属性partScore,这是一个常规属性,相信应该不用我多做解释,正常配置就行了!


最后,我再来解释一下你括号里注明的两处不懂得地方:

第一处id,相信看了上边的解释你已经知道它并不算是我们平时常见的id,而是一个组合主键。

而第二处“后边两个方法是干嘛的”呢?分析这两个方法名,equals()和hashcode(),这两个方法平时有什么用呢?这两个方法平时都是在比较两个对象是否相同时才会用到,才会被重写,既然这里重写了这两个方法,那就说明是为了判断两个CheckTableId是不是同一个!那么为什么要判断呢?不判断行不行呢?答案显然是“不行”,因为既然这是在配置对象与数据库字段的映射关系,那么主键就必须保证唯一,组合主键也一样得唯一,否则数据库就无法区分某个对象是否已经被保存!所以这里就必须重写equals和hashcode方法,而之所以equals方法那么长,其目的就是为了保证,不管你将来设置的组合主键是什么类型都能保证判断出两者是否一样。

追问  谢谢你详细,有条理的解答,但我还是不知道要怎么用代码实现增删概查操作,和那些单表或关联表的操作不同,那组合主键的两个属性都 不是 外键,没有和其他表关联的,你有这样的类似的代码让我研究一下吗?谢谢~

追答按上述配置完毕后,启动项目后(如果配置了hibernate自动建表),只会在数据库中生成一张表,这张表里有三个字段,分别就是tableId,contentId和partScore,所以对于这张表的增删改查也很简单,就是一个单表的增删改查,下边我拿保存来举例。保存的时候你只需要在程序里将CheckTableId对象中的两个属性set好值,然后再将设置好值的CheckTableId对象set给CheckTable对象中的id,同时也给partScore调用set方法设好值,这样CheckTable对象中的所有属性就封装好了,此时你只需要将这个对象传入DAO层,调用session.save(封装好的CheckTable对象实例)这个方法,就完成了向表中插入一条记录!删改查我就不再给你举例了,也很简单!

JAVA hibernate中删除表遇到主键被外键引用,违反完整约束条件,不能删除...

(方法1)将数据完整性约束交给Oracle处理 您测试一下,在sqlplus中,直接删除有子表记录的主表记录,如果能删除,可以不用在Hibernate中设置数据完整性。(方法2)将数据完整性约束交给Hibernate,在Hibernate设置好主子表关系,以及级联删除,这样就去除掉Oracle数据库中表的完整性约束,也就是不用设置子表...

hibernate 一对一 双向关联 级联保存,2个对象分别都insert到数据库表...

一对一有2种 一种是共享主键的关系 还有一种是唯一外键的关系。既然你说到外键没更新就是第二种关系 可能是你的配置文件没有写正确吧

数据库中两个表,一表中userid是主键,另个表中userId既主键又外键,我想...

update a set userid=1 from (select table1.userid from table1 join table2 on table1.userid=table2.userid)a

hibernate map 映射,key和value只能是一对一吗,一个key对应多个value怎 ...

再建立映射就行了.//关键要建立好关联关系的映射 当我们加载一个person类时,会加载这个person的属性setRecord 而setRecord是一个集合,我们可以从遍历集合里面取出这些联系记录.如果某个人的手机号码更改了,你要更新的不是person类,而是更新 联系记录类record类中的某个属性....

用Nhibernate怎么实现数据的添加,删除,修改简单程序

数据表:users 二、总体介绍 项目名:WebNhibernate 界面:WebForm.aspx 具体表现文件:WebForm.aspx.cs 实体类文件:EntityClass.cs 映射文件:Userhbm.xml 配置文件:Web.config 三、创建Web界面 类型 对象名 Text属性值 Label Label1 ID:Label Label2 姓名:Label Label3 密码:Label Label4 Email:...

...hibernate 一对一关联,怎么从前台获取到两个表的数据,还有在前台显 ...

你把懒加载设置为false,你就去查询主表,从表的数据Hibernate会一起查出来,然后你放在一个属性范围,在前台就可以拿出来的啊!

HQL语句 hibernate 单表怎么实现根据主键修改一个字段的值

...this.getHibernateTemplate().get(class, id);得到这个对象 然后set值,只要在set这个值之前没有关闭session那么会自动更新数据的,你下面截图写的update方法,update一个sql语句?

hibernate多对多关系从中间表中怎么一次性取得双方的数据

&lt;many-to-many class="Teacher" column="tid"&gt;//Teacher与中间表关联的列 与Teacher主键关联 &lt;/set&gt; --Teacher一方的配置文件-- &lt;set name="students" table="stu_tea_info"(中间表的)&gt; &lt;key column="tid"&gt;//此处column值必须与上面&lt;many-to-many class="Teacher" column="tid"&gt;处的...

在Hibernate数据库操作中,多对多关系是否需要建立中间表,若是要建...

中间表一般是联合主键 student_course --- sno CPK cno CPK sno引用student表的sno cno引用course表的cno

两个表的主键互为外键,这样就没法插入和删除数据了,是这样的吗,怎么解...

互为外键没有关系啊。前提是那个 “景区”表 的 “入口观察点” , 是要允许为 NULL 的。这样插入的顺序就可以操作了。先插入一个景区, 例如 “南京东路步行街”。 “入口观察点” 为 NULL 然后插入很多个 观察点, 例如 置地广场, 253广场, 名人商业大厦。(上面...

hibernate自增主键 hibernate联合主键 一个数据表中至少有一个主键 hibernate主键 hibernate配置无主键 hibernate主键生成策略 hibernate save hibernate多对多 hibernate多对一
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
安徽明光市 结婚彩礼钱一般是多少 如果一个人的生命只有7天的时间了,你会做什么 蓝莓 叶斑病 新买的九阳电饭煲,煮了4次饭都不熟,找专卖店说过了15天不能换。华星太... 我十几天前,在商水万果园购买一九阳电饭煲,那时促销员告诉我说;现在九... 如果一个人的生命只有7天的时间了,你会做什么 python正则表达式的分割 Python如何使用正则表达式分割字符串举4例说明 我午睡都会做梦,为什么?? 痛经能休息几天 唱歌的,是谁? 句子中什么动词后出现反身代词,要在反身代词前加by 英语中的反身代词怎么用? 反身代词 比如myself himself 这一类的 前面什么时候加by 什么时候不加 希望可以讲的详细一点 举几个例子 反身代词为什么要放在名词前 比如 something important 反身代词,放在介词后面和放在介词前面有什么区别? 反身代词前什么时候用by什么时候不用by 反身代词前是不是可以省略介词? 电竞文创设计大赛是啥? 反身代词前还要加介词吗 请问反身代词前面什么时候加介词,什么时候不用介词,有规律性吗? 文创作品是什么 反身代词前用什么介词 “四面山杯”文创设计大赛是分为好几个类别吗? es300h倒车影像广角可以调吗 倒车影像的摄像头看到的广角小,换成手机摄像头怎么样!!??&#128513; 倒车影像距离太远是摄像头问题还是系统问题 平安保险为什么要替丰汇承担风险? 汇丰为什么卖平安 增程式电动车领域的又一新选择 对比岚图 FREE 和理想 ONE 唱歌的明星是谁? 中国四大男高音歌唱家是谁? 重庆企业所得税汇算清缴能在网上办吗 唱歌的是谁? 这个唱歌的是谁 现在最红的人是谁啊 唱歌的 春节联欢晚会和张也唱歌的那个歌唱家是谁? 微粒贷额度6000已经借了3000,还可以继续借吗? 重汽豪沃售后400电话 承德的豪沃轻卡经销商在哪里 如何取消小米miui6.5.1.0手机安全模式 重汽轻卡售后经理电话 豪沃轻卡怎么卸大灯? 欠款超过二十年就不受法律保护 成都豪沃轻卡售后服务站在哪里? 借款超过二十年,途中有还款未足,可以受到法律保护吗? 二十年以前的贷款受法律保护吗? 法律规定借款20年不还钱就失效这个法律合理吗?为什么20年之后就失效了有什么理论吗? 豪沃轻卡服务再生是什么意思 借钱20年了也拘留过了借款人仍不还钱该怎样对待?