这里我是Spring和Hibernate一起用的,所以不知道单独使用Hibernate是什么效果,下面总结一下经验,留着以后查看
这也算是一种挺常见的问题,一个FatherClass下面有多个ChildClass,新增多条FatherClass,如果ChildClass是不同的,比较好处理,只需要FatherClass Set不同的ChildClass就可以了,但是如果ChildClass是一样的,就会造成ChildClass只会第一次新增的时候使用insert的方法,到了第二次就变成了update,即使使用FatherClass.getChildClass.clear()或者是FatherClass.getChildClass.removeall()的方法再进行第二次的新增也会造成update的结果。
这里说一下我解决的办法,我分成了两部来操作,首先是FatherClass的批量新增,当然只要每次new一个新的FatherClass就能新增了,然后是做子类的新增,把Set<ChildClass>中的子类一个一个取出来,然后new一个ChildClass,Set进去所有的属性和父类,然后再做新增的操作,这样就会每次都进行insert操作了,可能有点笨,但是效果还是挺明显的。
更新操作的时候子类也比较难处理,我的解决方法是将子类删除,然后再新增新更新后的新子类,所以每次都要FatherClass.getChildClass.clear(),然后再FatherClass.setChildClass(Set<ChildClass>),然后再对FatherClass进行更新操作,这样就达到了子类同时也更新的效果。
这也算是一种挺常见的问题,一个FatherClass下面有多个ChildClass,新增多条FatherClass,如果ChildClass是不同的,比较好处理,只需要FatherClass Set不同的ChildClass就可以了,但是如果ChildClass是一样的,就会造成ChildClass只会第一次新增的时候使用insert的方法,到了第二次就变成了update,即使使用FatherClass.getChildClass.clear()或者是FatherClass.getChildClass.removeall()的方法再进行第二次的新增也会造成update的结果。
这里说一下我解决的办法,我分成了两部来操作,首先是FatherClass的批量新增,当然只要每次new一个新的FatherClass就能新增了,然后是做子类的新增,把Set<ChildClass>中的子类一个一个取出来,然后new一个ChildClass,Set进去所有的属性和父类,然后再做新增的操作,这样就会每次都进行insert操作了,可能有点笨,但是效果还是挺明显的。
更新操作的时候子类也比较难处理,我的解决方法是将子类删除,然后再新增新更新后的新子类,所以每次都要FatherClass.getChildClass.clear(),然后再FatherClass.setChildClass(Set<ChildClass>),然后再对FatherClass进行更新操作,这样就达到了子类同时也更新的效果。