-
JPA 一对多级联更新时,不能级联删除.30
级联新增,删除都ok;
级联更新时,修改从表内容的update,新增也ok,就是删除不ok.
以下贴出代码部分,望大家能够指点.
public class Account implements java.io.Serializable
{
private String id;
private String name;
private String enabled;
private Set<Acct2group> acct2groups = new HashSet<Acct2group>(0);
@OneToMany(cascade = CascadeType.ALL, mappedBy = "account")
public Set<Acct2group> getAcct2groups()
{
return this.acct2groups;
}
将Account类查出后,
Account account = dao.findById(1);
Set set = account.getAcct2groups();//此时set结果集为4
set.clear();
em.merge(account);
事务是spring控管的,做别的持久层动作都没问题.
就是不能将remove掉的4个Acct2group对象,重DB中删除.
将set.clear换成set.iterator().hasNext()迭代remove也不可以.
大家伙帮忙看看啊.
问题补充:
kamhung 你好,
我用的是hibernate,org.hibernate.annotations.CascadeType没有DELETE_OPTION这个属性啊.只有DELETE和DELETE_ORPHAN.我两个都试了一下,都没有达到删除孤子的效果啊,还望再次帮助.2008年7月22日 16:42
4个答案 按时间排序 按投票排序
-
采纳的答案
JPA规范是不支持级联删除, 不过一般实现方都会提供扩展功能来支持。
如果你用的是toplink实现包的话, 你就要实现一个DescriptorCustomizer 接口
public class AccountDescriptorCustomizer implements DescriptorCustomizer {
public void customize(ClassDescriptor descriptor) throws Exception {
OneToManyMapping mapping = (OneToManyMapping) descriptor.getMappingForAttributeName("acct2groups");
if (mapping != null) mapping.setIsPrivateOwned(true);
}
}
然后在persistence.xml 中properties节点下加入:
<property name="toplink.descriptor.customizer.包名.Account" value="包名.AccountDescriptorCustomizer"/>
最后Acct2group 中 @ManyToOne 属性cascade将CascadeType.ALL 改成 {CascadeType.REFRESH, CascadeType.MERGE, CascadeType.MERGE}.
如果是hibernate的实现的话, 在@OneToMany
旁边加上: @org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.DELETE_OPTION)2008年7月23日 13:23
相关推荐
10_JPA详解_JPA中的一对多双向关联与级联操作.zip
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第10讲 JPA中的一对多双向关联与级联操作.avi
Hibernate 一对多、多对一、级联、加载、反转
struts2 spring jpa操作数据库 级联数据 hibernate
JPA中的一对多双向关联与级联操作
10_传智播客JPA详解_JPA中的一对多双向关联与级联操作.rar
07_JPA详解_使用JPA加载_更新_删除对象.zip 07_JPA详解_使用JPA加载_更新_删除对象.zip
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解.doc JPA注解....
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下
hibernate-jpa-2.1-api-1.0.0.final.jar.zip,内含hibernate-jpa-2.1-api-1.0.0.final.jar
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
Hibernate 是最流行的ORM 框架之一,也是最早实现JPA 的规范框架之一。它被JBoss 收购后, 目前作为JBoss 的一个开源框架,它遵循LGPL v2.1 开源许可协议,官方主页是http://www.hiber ate.org/。
Apress.Pro.JPA.2.2nd.Edition.Oct.2013
hibernate-jpa-2.0-api-1.0.1.Final.jar
JPA批注参考.JPA批注参考.JPA批注参考.JPA批注参考.
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
spring-jpa.jar........................................
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码