当前位置:编程学习 > JAVA >>

hibernate级联删除的问题

produtImg.hbm.xml 中部分代码
<many-to-one name="product" class="com.paiwei.site.entity.product.Product" column="product_id" foreign-key="ALLPREFERENCES" lazy="false" not-null="true"/>

produt.hbm.xml 中部分代码
<set name="productImg" cascade="all,delete-orphan" inverse="true">
<key>
<column name="product_id"/>
</key>
<one-to-many class="com.paiwei.site.entity.product.ProductImg" />
</set>


这种配置后不能级联删除,是不是哪配的不对? 我记得以前做的项目是可以的,现在用了 <!-- 自动建表 -->
<prop key="hibernate.hbm2ddl.auto">update</prop>  
</props>

应该跟这个无关吧?

后来只能在删除表重新建表后增加红色字体部分即可,有没有一种方法不用这么麻烦,配置文件写好就可以级联删除了?
CREATE TABLE `products_img` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pic` varchar(200) NOT NULL,
  `href` varchar(200) NOT NULL,
  `createTime` datetime NOT NULL,
  `product_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ALLPREFERENCES` (`product_id`),
  CONSTRAINT `ALLPREFERENCES` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`)  ON DELETE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; --------------------编程问答-------------------- cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改) --------------------编程问答--------------------
引用 1 楼 coolbamboo2008 的回复:
cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
好的  明天试试   多谢哈    --------------------编程问答--------------------
引用 1 楼 coolbamboo2008 的回复:
cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
 试过了   不行哦    呃···   郁闷了   难道只能用笨方法了? --------------------编程问答--------------------
引用 3 楼 QJKT7777777 的回复:
Quote: 引用 1 楼 coolbamboo2008 的回复:

cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
 试过了   不行哦    呃···   郁闷了   难道只能用笨方法了?


hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 4 楼 coolbamboo2008 的回复:
Quote: 引用 3 楼 QJKT7777777 的回复:

Quote: 引用 1 楼 coolbamboo2008 的回复:

cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
 试过了   不行哦    呃···   郁闷了   难道只能用笨方法了?


hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的


update的情况呢?  我去掉inverse="true" 不能UPDATE了 --------------------编程问答--------------------
引用 6 楼 QJKT7777777 的回复:
Quote: 引用 4 楼 coolbamboo2008 的回复:

Quote: 引用 3 楼 QJKT7777777 的回复:

Quote: 引用 1 楼 coolbamboo2008 的回复:

cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
 试过了   不行哦    呃···   郁闷了   难道只能用笨方法了?


hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的


update的情况呢?  我去掉inverse="true" 不能UPDATE了


去掉inverse="true"的话,你只能从“一”这一端更新,从“多”那端就不能更新了。所以你还是用笨办法好一些,删除时用hql写吧 --------------------编程问答--------------------
引用 7 楼 coolbamboo2008 的回复:
Quote: 引用 6 楼 QJKT7777777 的回复:

Quote: 引用 4 楼 coolbamboo2008 的回复:

Quote: 引用 3 楼 QJKT7777777 的回复:

Quote: 引用 1 楼 coolbamboo2008 的回复:

cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
 试过了   不行哦    呃···   郁闷了   难道只能用笨方法了?


hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的


update的情况呢?  我去掉inverse="true" 不能UPDATE了


去掉inverse="true"的话,你只能从“一”这一端更新,从“多”那端就不能更新了。所以你还是用笨办法好一些,删除时用hql写吧
除了这没办法了?  不能用配置文件一下子搞定吗? 呵呵 --------------------编程问答--------------------
引用 8 楼 QJKT7777777 的回复:
Quote: 引用 7 楼 coolbamboo2008 的回复:

Quote: 引用 6 楼 QJKT7777777 的回复:

Quote: 引用 4 楼 coolbamboo2008 的回复:

Quote: 引用 3 楼 QJKT7777777 的回复:

Quote: 引用 1 楼 coolbamboo2008 的回复:

cascade配置delete

另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
 试过了   不行哦    呃···   郁闷了   难道只能用笨方法了?


hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的


update的情况呢?  我去掉inverse="true" 不能UPDATE了


去掉inverse="true"的话,你只能从“一”这一端更新,从“多”那端就不能更新了。所以你还是用笨办法好一些,删除时用hql写吧
除了这没办法了?  不能用配置文件一下子搞定吗? 呵呵


配置文件别配太复杂了,没好处,你把inverse=true加上吧,这样从多那端可以更新了。从“一”这端删除你再查查资料看,应该是cascade配了就可以了
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,