`
koen
  • 浏览: 81929 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何在JPA 1.0下实现OneToMany的delete-orphan cascade策略

阅读更多

在JPA 1.0中,cascade的类型包含:MERGE, REFRESH, PERSIST, REMOVE, ALL

 

用过Hibernate的同学们都知道,以上类型和Hibernate的cascade相比,少了delete-orphan这种类型。而delete- orphan是很有用的,不知道为什么JPA 1.0并不支持。听说JPA 2.0将要加入,呵呵……总之,这再次证明了JPA 1.0的功能只是Hibernate功能的一个不完整的子集。

 

既然我们的项目选择了使用JPA 1.0,那么我们就需要找出在JPA 1.0下实现delete-orphan的方法。好在我们使用JPA的Hibernate实现(相信这也是大部分JPA使用者的使用方式),所以就有了以下的解决方法,也就是在Entity中加入Hibernate的Annotation: 

 

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
...

@Entity
@Table(name = "ORDERS")
public class Order implements Auditable, Serializable
{
    ...
   
    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
    @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
    private List<OrderItem> orderItems;
   
    ...
}

 

注意@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)这句。经测试后确认,加入这句后,JPA底层的Hibernate就会完成delete-orphan的动作,没有这句则不行。Hibernate确实够强大,发现JPA 的annotation不管用,如果发现自己的annotation,还是会自己搞定,牛……


灵感从这里来。

1
1
分享到:
评论

相关推荐

    easybeans-jpa-hibernate-dependency-1.0-m6-jonas-sources.jar

    jar包,官方版本,自测可用

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.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依赖信息文件:...

    S2Hibernate-JPA 1.0

    **S2Hibernate-JPA 1.0:Java Persistence API与S2Hibernate的融合** ...通过深入理解和使用S2Hibernate-JPA 1.0,开发者能够更好地驾驭Java世界的ORM实践,从而在项目中实现高效的数据存储和检索。

    jpa1.0中文手册

    根据提供的信息,我们可以从标题、描述和部分内容中提取出关于JPA 1.0中文手册的知识点。 首先,标题中提到了“jpa1.0中文手册”,指出了文档所针对的技术是Java Persistence API(JPA)的1.0版本。JPA是一个Java...

    JPA学习总结(三)--JPAOneToMany双向关联

    在本篇《JPA学习总结(三)--JPAOneToMany双向关联》中,我们将深入探讨Java Persistence API (JPA)中的OneToMany关系映射,这是一种在数据库表之间建立一对多关联的方式。JPA作为ORM(对象关系映射)框架,允许我们...

    myfaces-extcdi-jpa1-module-impl-1.0.6.zip

    这个特定的模块"myfaces-extcdi-jpa1-module-impl-1.0.6"是针对JPA1的实现,可能包含了对JPA 1.0规范的支持和整合。 【描述】"ddth-osgicommons.zip" 提到了DDTH(Dang Dang Too)的OSGi兼容Java公共库和实用工具。...

    hibernate-jpa-2.0-api-1.0.0-CR-1.jar

    java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题

    EJB 3.0 Specification (JPA 1.0)

    `persistence-api-1.0.x.jar`文件包含了JPA的API实现。 4. **实体生命周期回调**:通过注解如`@PrePersist`、`@PostLoad`等,开发者可以定义在对象持久化前后的回调方法,以实现一些额外的业务逻辑。 5. **查询...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    总的来说,`hibernate-jpa-2.1-api-1.0.0.final.jar`为开发者提供了丰富的JPA 2.1特性的实现,使得在Java项目中使用Hibernate进行数据库操作变得更加便捷和标准化。通过深入理解和熟练运用这个API,我们可以构建出...

    Ejb3-OneToMany--Good.rar

    2. **关联类型**:默认情况下,`@OneToMany`的关系是无序的,可以通过`@OrderBy`来指定排序规则。同时,可以设置`cascade`属性来决定操作父实体时是否同步处理子实体,如`CascadeType.ALL`表示所有操作都会影响到子...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.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依赖信息文件:...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    struts2+spring3.x+JPA1.0框架整合步骤

    3. **配置JPA属性文件**:在项目的`src/main/resources/META-INF`目录下创建`persistence.xml`文件,配置JPA的相关属性。例如: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; xmlns:xsi=...

    Pro JPA 2 Mastering the Java Persistence API free down

    ORM 映射增强特性,包括:支持通过使用 @ElementCollection 标注来增强 collections, maps 和 lists( 这里不是指实体之间的关联关系 ) 集合,支持 map 的单向 one-to-many 关联 (JPA1.0 只允许双向 one-to-many ...

    实用JPA开发指南----jpa核心技术(关联关系等的配置高级配置)

    使用`@OneToMany`注解,可以设置`fetch`策略(默认为`LAZY`,表示延迟加载)和`cascade`属性(如`CascadeType.ALL`,表示级联操作)。 3. **多对一(ManyToOne)**: 多个实体可以关联到一个实体,如多个学生属于一...

    spring-boot-starter-data-jpa-1.5.8.RELEASE.jar

    java运行依赖jar包

Global site tag (gtag.js) - Google Analytics