
hibernate多对一单向关联配置时发现个现象!插入时外键似乎没起约束作用
就是这关联虽然实现了取出many方可以把one方也取出,但是往many方插入数据时,可以加入你不希望加入的数据。比如many的字符段t_xxid必须在one方的t_xxi...
就是这关联虽然实现了取出many方可以把one方也取出,但是往many方插入数据时,可以加入你不希望加入的数据。比如many的字符段t_xxid必须在one方的t_xxid里有才可以插入数据。在数据库里加pk就可以实现,框架管理的时候似乎有点问题。难道插前先做个手动查询one的数据存不存在?这就给人感觉像阉割了的PK。
不过这样也有点好处就程序管理表关系
额仔细想了下这似乎是双向关联的要求,还有就是搞混了数据库PK和hibernate的关联映射的设计思想。问题自己解决- - 展开
不过这样也有点好处就程序管理表关系
额仔细想了下这似乎是双向关联的要求,还有就是搞混了数据库PK和hibernate的关联映射的设计思想。问题自己解决- - 展开
1个回答
展开全部
设置级联关系就可以实现了 cascade属性。。。。。
更多追问追答
追问
cascade的维护关系会调用update的(save-update)。(假设我要插入的表为emp,外键关联到的表为dept,Pojo类Emp,Dept)这样我插入可以插入的数据,维护关系调用update的话,就必须确定Emp持有的对象Dept必须是持久化的,而且update的会修改!那么还是必须要查看数据库(当然修改前后dept表数据一样的话,结果也是对的,但是明显做了一次费操作)。
这样还不如自己编逻辑先查看再插入,不设置cascade。.
追答
我当时是用的Hibernate 3.6.X 和 4.X的 映射是用Annotation的,在映射的时候加入@Cascade(CascadeType.SAVE_UPDATE) 这个是Hibernate自带的映射,这样在插入数据的时候,维护关系的那一端会自己检查需要级联的数据 如果不存在 就自己插入,如果存在 就更新,xml形式的我没有试过,无权下定论
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询