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

关于OneToMany中update某一个字段级联操作问题

阅读更多

代码如下:

package com.founder.tweb.entity.cms;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
//表名与类名不相同时重新定义表名.
@Table(name = "GROUPLIB")
//默认的缓存策略.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class GroupLib {
	
	private Integer groupId;
	
	private String groupName;
	
	private String groupDesc;
	
	private String groupType;
	
	private Integer groupOrder;
	
	private Integer activityId;
	
	private Set<MediaGroup> mediaGroups = new HashSet<MediaGroup>();
	
	private Set<ImageGroup> imageGroups = new HashSet<ImageGroup>();
	
	
    //默认构造函数
	public GroupLib() {
	}

	//带参数的构造函数
	public GroupLib(Integer groupId, String groupName, String groupDesc,
			String groupType, Integer groupOrder, Integer activityId) {
		super();
		this.groupId = groupId;
		this.groupName = groupName;
		this.groupDesc = groupDesc;
		this.groupType = groupType;
		this.groupOrder = groupOrder;
		this.activityId = activityId;
	}

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	public Integer getGroupId() {
		return groupId;
	}

	public void setGroupId(Integer groupId) {
		this.groupId = groupId;
	}



	public String getGroupName() {
		return groupName;
	}



	

	public void setGroupName(String groupName) {
		this.groupName = groupName;
	}



	public String getGroupDesc() {
		return groupDesc;
	}



	public void setGroupDesc(String groupDesc) {
		this.groupDesc = groupDesc;
	}



	public String getGroupType() {
		return groupType;
	}



	public void setGroupType(String groupType) {
		this.groupType = groupType;
	}



	public Integer getGroupOrder() {
		return groupOrder;
	}



	public void setGroupOrder(Integer groupOrder) {
		this.groupOrder = groupOrder;
	}



	public Integer getActivityId() {
		return activityId;
	}



	public void setActivityId(Integer activityId) {
		this.activityId = activityId;
	}
	
	
	@OneToMany
	@JoinColumn(name = "groupId",updatable=false)
	public Set<MediaGroup> getMediaGroups() {
		return mediaGroups;
	}

	public void setMediaGroups(Set<MediaGroup> mediaGroups) {
		this.mediaGroups = mediaGroups;
	}


	@OneToMany
	@JoinColumn(name = "groupId",updatable=false)
	public Set<ImageGroup> getImageGroups() {
		return imageGroups;
	}

	public void setImageGroups(Set<ImageGroup> imageGroups) {
		this.imageGroups = imageGroups;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}
  我的问题是当对表grouplib进行更新操作的时候,对应的mediaGroup中groupId就变成了null,我想改变这种影响,无论是否更新都不会影响mediagroup表,注意红色字体部分中的updatable=false,起了很关键的作用。
分享到:
评论

相关推荐

    Hibernate级联操作一对多demo

    在Java持久化框架Hibernate中,级联操作是处理对象关系映射(ORM)时非常重要的一个特性。级联操作允许我们在对一个实体进行操作时,自动地影响与之相关的其他实体,无需显式地处理这些关联。在这个" Hibernate级联...

    Hibernate_范型_级联

    在Java编程中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发人员将数据库操作转换为面向对象的方式,从而简化了数据库应用的开发。范型(Generics)是Java 5引入的一个特性,用于提高代码类型安全性和...

    hibernate注解 级联 多对一 一对多

    - **多对一**:在`User`类中通过`@ManyToOne`映射到`Address`类,表示一个用户对应一个地址。 - **一对多**:可以在`Address`类中使用`@OneToMany`映射多个用户,但通常情况下,为了保持数据一致性,我们会选择在`...

    hiberante - one to many - update

    标题中的“Hibernate - one to many - update”指向的是一个关于Hibernate框架中的一对多关联关系在更新操作时的专题。Hibernate是Java开发中常用的持久化框架,它简化了数据库操作,使得开发者可以更加关注业务逻辑...

    hibernate一对一一对多多对多实例工程

    级联操作允许将一个操作应用于关联的对象,如当删除一个实体时,可以选择是否同时删除与其关联的所有实体。常见的级联类型有`CascadeType.SAVE_UPDATE`、`CascadeType.DELETE`、`CascadeType.ALL`等。合理设置级联...

    hibernate_second2项目源码

    如果我们有一个`User`类和一个`Address`类,`User`有一个`List&lt;Address&gt;`的属性,我们可以在`@OneToMany`注解中添加`cascade = CascadeType.ALL`,表示当用户对象保存或更新时,其关联的所有地址也会被级联操作。...

    hibernate入门学习

    2. 在关联的另一个实体类中(这里是`Order`),定义一个外键字段,比如`@ManyToOne`注解的`User user`字段,表示每个订单都属于一个用户。 3. 使用`mappedBy`属性来指定被引用的一方,例如在`@OneToMany`注解中设置`...

    库表在WEB中的映射

    在描述中提到的“实体表映射”,就是指在程序中定义一个类,这个类对应数据库中的一个表,类的属性对应表的字段,这样就建立了对象与数据库之间的桥梁。 1. **实体类的创建**:在Java中,一个实体类通常是POJO...

    用hibernate操作多表的例子

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过面向对象的方式处理数据库操作,极大地简化了数据访问层的代码。本教程将详细讲解如何使用Hibernate进行多表操作,这对于理解和...

    hibernate(一对多,多对一映射)操作

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,使得在Java应用中操作数据库变得更加简单。本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一...

    Hibernate_关联关系映射配置

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。本教程将详细讲解Hibernate中的关联关系映射配置,帮助你理解和掌握如何...

    hibernate关联关系多对一实例

    在Java的持久化框架Hibernate中,"多对一"关联关系是对象关系映射(ORM)中的一个重要概念。这种关联关系意味着在一个实体类中,一个或多个实例可以与另一个实体类的一个实例相关联。例如,我们可以想象一个班级...

    hibernate关联关系总结

    同时,了解级联操作(Cascade Type)如SAVE_UPDATE、PERSIST、REMOVE等可以帮助避免不必要的数据库操作。 举例来说,如果我们有一个User类和Role类,User可以有多个Role,那么在User类中,我们可以这样配置: ```...

    hibernate的关联映射

    级联操作允许我们在操作一个实体时,自动处理与其关联的其他实体。例如,当删除一个用户时,可以选择是否同时删除该用户的所有订单。常用的级联类型有`SAVE_UPDATE`、`PERSIST`、`REMOVE`、`REFRESH`和`ALL`。 **懒...

    Hibernate一对多,多对一映射

    在Java的持久化框架中,Hibernate是一个非常重要的存在,它为开发者提供了强大的对象关系映射(ORM)功能,使得在数据库操作上可以更加便捷地使用面向对象的方式。本主题将深入探讨Hibernate中的一对多和多对一映射...

    Hibernate 的关联映射

    - 级联操作:`cascade`属性可以配置为SAVE_UPDATE、PERSIST、MERGE、REMOVE等,决定操作一个实体时是否也影响关联的实体。 - FetchType:`fetch`属性控制关联对象的加载时机,EAGER会立即加载,LAZY则延迟到实际使用...

    hibernate注释源程序

    本篇文章将深入探讨Hibernate中的注释(Annotation)使用以及级联操作,并通过一个简单的源程序实例进行解析。 ### Hibernate 注释 在Hibernate 3.x版本之后,注释成为了一种主流的元数据定义方式,替代了传统的...

    hibernate_1700_one2many_many2one_bi_crud(5)

    为了实现这些关联,我们需要在实体类中定义`@OneToMany`和`@ManyToOne`注解,配置关联字段,如`mappedBy`属性来指定被引用的一方。同时,可能还会涉及到级联操作(cascade),比如设置`CascadeType.ALL`来使CRUD操作...

    hibernate 一对多映射

    在Java开发中,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它极大地简化了数据库操作。本文将深入探讨 Hibernate 的简单搭建以及其中的一对多映射关系。 ## Hibernate 搭建 1. **环境配置**...

    hibernateORM1-n映射

    4. **外键**:在“N”端的实体类中,需要有一个字段作为外键,指向“1”端的主键。这个字段通常使用`@ManyToOne`注解,并且可以通过`@JoinColumn`来指定外键列名。 5. **级联操作**:在一对多关系中,我们可以设置...

Global site tag (gtag.js) - Google Analytics