`
happysnowcity
  • 浏览: 13651 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

当懒加载时,貌似级联删除和insertable=false同时使用,级联删除不起作用

阅读更多

先上实体类

serviceView实体

 

@Entity
@Table(name = "service_view")
public class ServiceView implements Serializable{
	@Column(name = "name", length = 50)
	private String name;
	@OneToMany(mappedBy = "serviceView",fetch=FetchType.LAZY,cascade={CascadeType.REMOVE})
	private Set<ServiceNode> serviceNodes=new HashSet<ServiceNode>();
//省略get、set方法
}

 serviceNode实体:

 

@Entity
@Table(name = "service_node")
public class ServiceNode  implements Serializable{
	@Column(name="x")
	private Integer x;
	@Column(name="y")
	private Integer y;
        @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE})
	@JoinColumn(name="service_id",insertable=false,updatable=false)
	private ServiceView serviceView;
	@Column(name="service_id")
	private String serviceId;
        //省略get,set方法
	}

 这时候执行一个删除serviceView的对象,不能级联删除相关的serviceNode对象。

 

service.delete(serviceView);

但是我与不想使用FetchType.All,或者FetchType.EAGER

不知道为什么。

现在只能费劲点,去掉外键Id字段,改为:

        @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE})
	@JoinColumn(name="service_id")
	private ServiceView serviceView;

 谁有好的方法,可以分享一下

分享到:
评论

相关推荐

    hibernate注解 级联 多对一 一对多

    ### Hibernate注解与关系映射详解 #### 一、Hibernate注解基础 **1.1 @Entity** - **概述**:`@Entity`用于标记一个Java类为实体...在处理复杂的实体间关系时,理解不同注解的作用以及如何合理搭配使用是非常关键的。

    Hibernate关联关系疑问

    懒加载默认不加载关联对象,只有在真正需要时才查询数据库;而急加载则会在加载主体对象时一起加载关联对象。通常,为了性能考虑,推荐使用懒加载,但过度依赖懒加载可能导致N+1查询问题。 6. **级联操作(Cascades...

    SpringData+jpa一对一与一对多

    这意味着,当我们操作 School 或 Address 时,关联的对象也将被级联操作。 例如,在 School 中,我们可以使用 @OneToOne(cascade = CascadeType.ALL) 来维护与 Address 的一对一关系。 ```java @Data @Entity @...

    JPA注解.docx

    `name`用于指定列名,`nullable`、`unique`、`length`、`insertable`和`updateable`分别控制列的可空性、唯一性、长度、是否在INSERT和UPDATE语句中使用。`columnDefinition`则可以指定字段的数据库类型。例如: ``...

    JPA注解详细解释、EJB3、 Hibernate开发

    - `fetch`:读取策略,包括`EAGER`(急加载,默认值)和`LAZY`(懒加载)。 - `optional`:是否允许为`null`,默认为`true`。 #### 6. `@Column` - **描述**:`@Column` 注解用于详细定义实体属性映射到数据库...

    JPA注解总结

    JPA 使用注解和 XML 来配置实体类与数据库表之间的映射关系。本文将详细解读 JPA 注解的基本用法,并通过 Hibernate 框架作为实现 JPA 规范的具体例子。 #### 1. @Entity - **用途**:`@Entity` 注解用来标记一个 ...

    JPA注解说明 详解

    `fetch`定义加载策略,`cascade`定义级联操作,如保存、删除等是否影响关联的实体。 9. **@OneToOne, @OneToMany, @ManyToMany**:这三种注解分别用于定义一对一、一对多和多对多的关系映射,它们也包含fetch和...

    hibernate基于jpa注解说明[参考].pdf

    在软件开发领域,尤其是Java企业级应用中,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式操作数据库。而Java Persistence API(JPA)是Java平台上的标准ORM规范,它定义了一...

    model实体类中Hibernate注解说明[借鉴].pdf

    `fetch`控制关联对象的加载策略,`cascade`定义级联操作,如保存、删除等。 9. **@OneToOne**、**@OneToMany**、**@ManyToMany**:这些注解分别用于表示一对一、一对多和多对多的关系映射,它们都有相应的属性来...

    JPA -amp Hibernate 注解

    - `insertable` 和 `updatable`:表示在执行插入和更新操作时该字段是否参与,默认均为 `true`。 - `columnDefinition`:表示该字段在数据库中的实际类型。 **示例**: ```java @Column(name = "birthday", ...

    hibernate映射的注解配置

    `name`参数是可选的,用于指定实体在数据库中的表名,当实体名与表名不一致时使用。 2. **@Table(name="", catalog="", schema="")**:这个注解用于提供关于实体所对应数据库表的更多信息,包括表名、Catalog和...

    JAVA ---JPA注解

    可选项包括 `EAGER`(立即加载)和 `LAZY`(延迟加载)。默认为 `EAGER`。 - `optional`:可选,用于指定属性是否允许为 `null`。默认为 `true`。 - **用法**:放在属性上。 ```java @Entity public class User ...

    Hibernate_实体类_注解_说明

    当属性用于计算或非持久化逻辑时,应使用此注解。 #### 6. `@ManyToOne`与关联映射 - **`@ManyToOne`**:表示多对一的关系,即多个实体可以关联到单个实体上。此注解还可以包含`fetch`和`cascade`属性,进一步控制...

    关于struts2和hibernate的部分注解解释

    通过以上注解的使用,我们可以轻松地定义和管理实体类与数据库之间的映射关系,从而简化了数据访问层的开发工作。这些注解不仅提供了强大的功能,还大大提高了代码的可维护性和可扩展性。对于初学者而言,熟练掌握...

Global site tag (gtag.js) - Google Analytics