请问hibernate中关联关系多对一中 在多的一方的配置文件中column属性如何写??他如何使两个表关联起来了

2024-10-29 13:25:45
推荐回答(3个)
回答1:

一对一
1.1 外键关联 把外键对应的字段加上唯一约束
1.2 主键关联 我的主键就是你的主键 采用的主键生产机制是foreign
一对多 *******级联与反转********
我们偏爱双向一对多 在一方使用级联与反转 注意这里的一方
如果不用反转 hibernate默认由一方维护关联关系的字段 做法是一个一个的对集合里面的数据进行插入,关联字段为空,之后发一条一条的uodate语句去更新关联字段
如果我们用反转 表明将我们的关联关系维护权交给另一方(多方)管理,由多方维护关联字段的话,不会产生update语句,带来了性能上的
提升
级联:当主对象做操作时候其关联的对象也做与主对象类似的操作,可以减少我们的代码,一般在一方使用,我们认为在多方设置级联没有什么意义
级联 Cascade的取值:
用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的Cascade取值有:
none,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan

级联时 给关联对象设置id时需要注意,hibernate会对关联的对象进行update,二 如果关联对象在数据库不存在的时候会报错
*******级联删除*******:
1 关联关系不是由你控制,级联删除会报外键约束错误

2 控制权交给你 ,如果当前对象是非持久化状态,则先解除关系,把关联字段设置为NULL,然后删除自己

3 当前对象是持久化状态,不管有没有控制权,都可以删除它自己以及它关联的对象
反转:是否将关联关系维护权交给另一方控制 inverse 在 多对多(会出现什么问题(由一方去设值就可以了)) 加一个中间表 many-to-many 实则是转成两个一对多 一方使用inverse="true" 一方使用inverse="false"

回答2:

其实这个column是可以不写的,默认就是对象名加"_id",但是我们一般还是需要写的,但是有一点需要注意:那就是多对一中的column指定的值一定要和一对多中的column指定的值完全一样,否则会报错。

回答3:

colum就是数据库表的列明,所以表中时什么你就写什么。没有什么关系