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"就别要了(他的意思是让多的那一端主导增删改) --------------------编程问答-------------------- 好的 明天试试 多谢哈 --------------------编程问答-------------------- 试过了 不行哦 呃··· 郁闷了 难道只能用笨方法了? --------------------编程问答--------------------
hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的 --------------------编程问答-------------------- --------------------编程问答--------------------
试过了 不行哦 呃··· 郁闷了 难道只能用笨方法了?
cascade配置delete
另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的
update的情况呢? 我去掉inverse="true" 不能UPDATE了 --------------------编程问答--------------------
试过了 不行哦 呃··· 郁闷了 难道只能用笨方法了?
cascade配置delete
另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的
update的情况呢? 我去掉inverse="true" 不能UPDATE了
去掉inverse="true"的话,你只能从“一”这一端更新,从“多”那端就不能更新了。所以你还是用笨办法好一些,删除时用hql写吧 --------------------编程问答--------------------
试过了 不行哦 呃··· 郁闷了 难道只能用笨方法了?
cascade配置delete
另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的
update的情况呢? 我去掉inverse="true" 不能UPDATE了
去掉inverse="true"的话,你只能从“一”这一端更新,从“多”那端就不能更新了。所以你还是用笨办法好一些,删除时用hql写吧
除了这没办法了? 不能用配置文件一下子搞定吗? 呵呵
试过了 不行哦 呃··· 郁闷了 难道只能用笨方法了?
cascade配置delete
另外,如果你想从一的这一端去删除多的那一端, inverse="true"就别要了(他的意思是让多的那一端主导增删改)
hoho,笨办法也行,其实我倒是觉得用笨办法好些,不用想那么多了。因为一般都不从一这一端操作的
update的情况呢? 我去掉inverse="true" 不能UPDATE了
去掉inverse="true"的话,你只能从“一”这一端更新,从“多”那端就不能更新了。所以你还是用笨办法好一些,删除时用hql写吧
配置文件别配太复杂了,没好处,你把inverse=true加上吧,这样从多那端可以更新了。从“一”这端删除你再查查资料看,应该是cascade配了就可以了
补充:Java , Web 开发