是这样的,我有两个实体,比如A和C,现在他们是一对一,是外键关联的那种哦,A的配置为<many-to-one>,C 的配置为 <one-to-one> ,我想实现的是,
情况一:当我更新A的时候如果也更新C,则如果原来没有对应C的则会插入一条C的数据,如果有对应C的,则更新这条C的数据。
情况二:如果我插入一条A数据则有可能会插入对应的C也有可能不插入(因为C不一定需要)。敢问各位,上面的情况hibernate能实现吗,具体的配置要怎么样的,谢谢了

解决方案 »

  1.   

    我现在也是只能在代码里判断,非常麻烦,但是我好像听人说更新A的时候如果set了c 则没有c的就插入,有的就更新,好像能这样,再等等先
      

  2.   

    情况一:的话你可以用一个好像叫merge()的方法实现,它和更新的方法差不多,不过能实现你说的情况。
    第二种我感觉你只能在程序你判断了。
      

  3.   

    可以实现,设置级联更新这个属性。hibernate 会根据A中是否有C来决定是否插入C,会根据C的id判断是插入还是更新C。跟新A的时候最好使A处于持久化状态。
      

  4.   

    hibernate的映射文件中有一个属性是负责这个的,具体的我记不清楚了,就是用于管理我操作A是否会影响到C,但不知道合不合楼主的意思。楼主可以去查一下
      

  5.   

    平常我是这么用的
    可以在 A    的一方设置cascade属性为true 就可以实现
    当我更新A的时候如果也更新C,则如果原来没有对应C的则会插入一条C的数据,如果有对应C的,则更新这条C的数据。
      

  6.   

    用annotation的话用@SecondaryTable很方便,操纵2个table的时候感觉像操纵1个table。
      

  7.   

    第一条:  cascade="save-update" 这个可以搞定吧 ?但是第二条,你就要自己判断了?但是2条一起实现,你就只能自己代码判断了,不要等高人了,,,,,,,结帖......