situbin
2011-08-09 17:30
浏览 334
已采纳

请教如何通过配置禁用hibernate级联操作?

请教如何通过配置禁用hibernate级联操作? :idea:

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • renpeng301 2011-08-09 20:36
    已采纳

    [code="java"]
    插入实体a的时候没有问题,事务不提交,这时取得实体B,给B中设置A的外键,这时调用实体B的save,提示ORA-02291: 违反完整约束条件 (SCOTT.FKCF1D2DAE4433FB2E) - 未找到父项关键字
    [/code]
    你这个方式,事务不提交,A实体肯定还没存入数据库啊。
    如果没,那么赋值B就会出问题。。。

    点赞 打赏 评论
  • xing23777 2011-08-09 17:36

    cascade(级联):
    级联的意思是指定两个对象之间的操作联运关系,对一个 对象执行了操作之后,对其指定的级联对象也需要执行相同的操作,取值:all、none、save_update、delete

    1、 all:代码在所有的情况下都执行级联操作

    2、 none:在所有情况下都不执行级联操作

    3、 save-update:在保存和更新的时候执行级联操作

    4、 delete:在删除的时候执行级联操作。

        例如:<many-to-one name="group" column="groupid" cascade="save-update"/>
    
    点赞 打赏 评论
  • zhanghh321 2011-08-09 17:55

    晕,,,你只要配置为none就好了啊 然后你要的效果只有你在程序里面实现了

    点赞 打赏 评论
  • renpeng301 2011-08-09 20:39

    你实体类是注解配置的吧?
    默认情况下 CascadeType是none,不设置这个注解属性试试。
    然后的话,你先插入A时,一定得先提交事务。。。。

    点赞 打赏 评论
  • renpeng301 2011-08-10 09:54

    :o 你是自己手动管理事务的?
    如果是的话,你不提交,肯定不行的吧?
    那个数据库都这样啊,只是你可以事务自动提交啊

    点赞 打赏 评论
  • renpeng301 2011-08-10 11:24

    :D spring托管的,那你怎么让它不提交事务了?
    你先这样吧,单独插入A,先不管B,正常么?

    点赞 打赏 评论

相关推荐