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

求详解或类似的操作代码参考映射文件如下(是用MyEclipse自动生成的映射文件的对应Java文件)该表有三个属性,主键(table_id,content_id)另一个是... 求详解或类似的操作代码参考
映射文件如下(是用MyEclipse自动生成的映射文件的对应Java文件)
该表有三个属性,主键(table_id,content_id)另一个是part_score

但实体的Java文件却有两个,分别如(
CheckTable .java(两个属性,id属性不知道是干嘛的?)

CheckTableId.java文件(后面两个方法不知道是干嘛的?)
展开
 我来答
wang7218169
2014-03-16 · TA获得超过238个赞
知道小有建树答主
回答量:86
采纳率:100%
帮助的人:74.8万
展开全部

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

首先,你贴出来的配置文件并不完全,最上边少了一个<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对象实例)这个方法,就完成了向表中插入一条记录!删改查我就不再给你举例了,也很简单!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式