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

hibernate 自连接 注解 item parentItem ( 非级联删除 , 级联查询)

阅读更多

 

@JsonAutoDetect

解决 该bug: Failed to load resource: the server responded with a status of 406 (Not Acceptable) : The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers () 

 

@org.hibernate.annotations.Proxy(lazy = false)

解决该bug: hibernate load() get() bug  ,,session 提前 close 问题

 


 

package com.cmcc.cailing.entity;

import java.io.Serializable;
import java.util.ArrayList; 
import java.util.List; 

import javax.persistence.CascadeType;
import javax.persistence.Column;
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.OrderBy;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.slave4j.orm.hibernate.BaseEntity;
 
@JsonAutoDetect
@Entity
@Table(name = "t_company")
@org.hibernate.annotations.Proxy(lazy = false)
public class Company extends BaseEntity implements Serializable {

	
	/* `id` int(11) NOT NULL AUTO_INCREMENT,
	  `compName` varchar(50) DEFAULT NULL,
	  `compPhone` varchar(20) DEFAULT NULL,
	  `compEmail` varchar(20) DEFAULT NULL,
	  `compType` int(11) DEFAULT NULL,
	  `bossCompId` varchar(255) DEFAULT NULL,
	  `parentId` int(11) NOT NULL,
	  `orgCode` varchar(100) DEFAULT NULL,
	  `openType` int(11) DEFAULT NULL,*/
	 
	private static final long serialVersionUID = -5589729937828659285L; 
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id")
	private int id;

	@Column(name = "compname")
	private String compName;
	
	@Column(name = "compphone")
	private String compPhone;
	
	@Column(name = "compemail")
	private String compEmail;
	
	@Column(name = "comptype")
	private int compType;
	
	@Column(name = "bosscompid")
	private String bossCompId;
	

    @ManyToOne(cascade = CascadeType. REFRESH, targetEntity = Company.class  , fetch = FetchType.EAGER,optional = false) 
    @JoinColumn(name = "parentid",  unique = true, nullable = false, updatable = false ,insertable = true )
    @NotFound(action=NotFoundAction.IGNORE)
    @JsonIgnore
    @Cascade(value = { org.hibernate.annotations.CascadeType.SAVE_UPDATE })
    private  Company parentCompany; 
	 
	@Column(name = "opentype")
	private int openType;
	
	@Column(name = "orgcode")
	private String orgCode; 
	  
 	
	@OneToMany(cascade = CascadeType. REFRESH, mappedBy = "parentCompany", fetch = FetchType.EAGER)  
	@NotFound(action=NotFoundAction.IGNORE)
	@OrderBy("id")
	private List<Company> childCompany = new ArrayList<Company>();  

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getCompName() {
		return compName;
	}

	public void setCompName(String compName) {
		this.compName = compName;
	}

	public String getCompPhone() {
		return compPhone;
	}

	public void setCompPhone(String compPhone) {
		this.compPhone = compPhone;
	}

	public String getCompEmail() {
		return compEmail;
	}

	public void setCompEmail(String compEmail) {
		this.compEmail = compEmail;
	}

	public int getCompType() {
		return compType;
	}

	public void setCompType(int compType) {
		this.compType = compType;
	}

	public String getBossCompId() {
		return bossCompId;
	}

	public void setBossCompId(String bossCompId) {
		this.bossCompId = bossCompId;
	}
	
	

	 public Company getParentCompany() {
		return parentCompany;
	}

	public void setParentCompany(Company parentCompany) {
		this.parentCompany = parentCompany;
	}  
 
	public int getOpenType() {
		return openType;
	}

	public void setOpenType(int openType) {
		this.openType = openType;
	}

	public String getOrgCode() {
		return orgCode;
	}

	public void setOrgCode(String orgCode) {
		this.orgCode = orgCode;
	}

	 
	public List<Company> getChildCompany() {
		return childCompany;
	}

	public void setChildCompany(List<Company> childCompany) {
		this.childCompany = childCompany;
	}

  @Override
	public String toString() {
		return "Company [id=" + id + ", compName=" + compName + ", compPhone=" + compPhone + ", compEmail=" + compEmail
				+ ", compType=" + compType + ", bossCompId=" + bossCompId 
				+ ", parentCompany=" + (parentCompany != null?parentCompany.toString():null ) 
				+ ", openType=" + openType + ", orgCode=" + orgCode
				//   + ", childCompany=" + (childCompany.size() > 0 ? childCompany.toString() :  null)
				 +"]";
	}  
  
}

 

 

 非级联删除 , 级联查询

 

package com.cmcc.cailing.service;

import java.util.List; 
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.cmcc.cailing.entity.Company;

public class CompanyServiceTest {

	public static void main(String[] args) {
		  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  new String[] { "classpath*:applicationContext*.xml"  });   
		  CompanyService companyService = (CompanyService) context.getBean("companyService");
		  System.out.println(companyService);
		  
		  Company find2 = companyService.getCompanyById(2);
		  System.out.println("------------------");
		  System.out.println(find2.toString());
		  List<Company> list = find2.getChildCompany();
		  System.out.println(list.toString() );
		  System.out.println("------------------");
		  Company find3 = companyService.find("id", 2);
		  System.out.println(find3);
		  System.out.println("------------------");
		  Company find = companyService.find(1);
		  System.out.println(find.toString()); 
		  

			/* `id` int(11) NOT NULL AUTO_INCREMENT,
			  `compName` varchar(50) DEFAULT NULL,
			  `compPhone` varchar(20) DEFAULT NULL,
			  `compEmail` varchar(20) DEFAULT NULL,
			  `compType` int(11) DEFAULT NULL,
			  `bossCompId` varchar(255) DEFAULT NULL,
			  `parentId` int(11) NOT NULL,
			  `orgCode` varchar(100) DEFAULT NULL,
			  `openType` int(11) DEFAULT NULL,*/
		  Company entity = new Company();
		  entity.setCompName("renjiliankaidegognsi");
		  entity.setCompPhone("15011112222");
		  entity.setCompEmail("renhjilian@163.com");
		  entity.setCompType(0);
		  entity.setBossCompId(5+"");
		   Company company2 =  companyService.getCompanyById(2); 
		  entity.setParentCompany( company2);
		  entity.setOrgCode("1231232");
		  entity.setOpenType(0);
		  System.out.println("============================ save ");
		  companyService.save(entity );
		  System.out.println("============================ save end ,start find ");
		  Company company23 = companyService.getCompanyById(entity.getId());
		  System.out.println(company23.toString());
		  System.out.println("============================ find end, update start ");
		  company23.setCompName("12121212 renjilian ");
		  companyService.update(company23);
		  System.out.println("============================  update  end , delete start ");
//		  companyService.delete(entity);
		  companyService.delete(entity.getId()); 
		  System.out.println("============================  delete end ");
		  
	}
}

 

 



 
 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

  • 大小: 15.5 KB
  • 大小: 44.2 KB
0
4
分享到:
评论

相关推荐

    hibernate 级联查询

    4. **级联查询示例**:例如,一个用户可以有多个订单,当删除用户时,如果设置了级联删除,那么相关的订单也会被一起删除。 5. **级联操作的优缺点**:优点是简化了代码,提高了开发效率;缺点是如果不合理使用,...

    hibernate many-to-many级联保存,级联更新,级联删除

    本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、级联更新和级联删除。 一、Many-to-Many关系基础 在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门...

    Hibernate的级联操作(增,删,该)

    2. 级联删除(Cascade Type.REMOVE) 当设置为`CascadeType.REMOVE`时,如果删除了父实体,与之关联的子实体也会被删除。这在处理一对多或者多对多关系时非常有用,可以确保相关的数据在数据库中得到一致性的清理。...

    Hibernate的缓存级联查询

    HQL(Hibernate Query Language)是Hibernate提供的面向对象的查询语言,它支持多种连接查询类型,如内连接、迫切内连接、隐式内连接、左外连接、迫切左外连接、右外连接和交叉连接,提供了与SQL类似的查询功能。...

    java级联查询、分页查询

    在Java编程中,级联查询和分页查询是数据库操作中的常见需求,特别是在处理大量数据时。级联查询用于获取一个实体的相关实体信息,而分页查询则用于提高查询效率和用户体验,避免一次性加载过多数据导致性能下降。...

    hibernate实体系注解

    在处理一对多或多对一关系时,我们可能会遇到级联操作的需求,比如当删除一个父实体时,希望同时删除所有关联的子实体。这可以通过`CascadeType`实现: ```java @OneToMany(cascade = CascadeType.ALL) private ...

    用hibernate做的省市县三级级联,

    这些类通常会包含一些基本属性如ID、名称等,并通过Hibernate的注解与数据库表建立关联。 接下来是`UserAction.java`,这通常是Struts2框架中的一个Action类,负责接收用户的请求并调用相应的业务逻辑。在这个案例...

    Hibernate 一对多、多对一、级联、加载、反转

    在Java持久化框架Hibernate中,一对多(One-to-Many)、多对一(Many-to-One)、级联(Cascading)、加载(Loading)和反转(Inversing)是关系映射的重要概念,它们对于理解如何在数据库和对象之间有效地管理关联至...

    struts2 hibernate 实现无限级联 树形分类

    在这个"struts2 hibernate 实现无限级联 树形分类"项目中,主要目标是创建一个能够展示无限级联的树形分类结构。这种结构通常用于组织层次化的数据,如产品类别、部门结构或者权限角色等。无限级联意味着这个树可以...

    Hibernate级联操作一对多demo

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

    hibernate注解

    在本文中,我们将深入探讨Hibernate注解的几个核心方面:级联关系、增删改查操作、二级缓存、日志配置以及注解解析。 1. **级联关系**: Hibernate中的级联关系允许我们在一个实体的操作中自动处理与其关联的其他...

    hibernate3.2的级联关系_JavaProject

    级联关系在Hibernate中是指当一个实体发生某种操作(如保存、更新、删除)时,是否会影响到与之相关联的其他实体。通过配置级联关系,我们可以控制这些关联实体的行为。 1. **一对多(OneToMany)**:在数据库中,...

    hibernate级联增删改查

    而对于HQL(Hibernate Query Language),它是Hibernate提供的面向对象的查询语言,可以方便地进行级联操作。例如,更新t_card的同时更新t_person: ```java String hql = "update TCard c set c.status = 'active'...

    第七章_Hibernate_-_级联策略

    第七章_Hibernate_-_级联策略 第七章

    Oracle数据库中的级联查询、级联删除、级联更新操作教程

    首先,级联查询是通过自连接来实现的一种查询方式,特别是在树形结构的数据中,如组织架构、菜单系统等。以下是一个简单的级联查询示例: ```sql SELECT * FROM table START WITH selfid = id CONNECT BY PRIOR ...

    cas.rar_MATLAB 级联失效_级联_级联失效 代码_级联失效代码_级联失效算法

    在IT领域,级联失效(Cascading Failure)是一种复杂的现象,特别是在网络系统中,如电力网格、互联网或通信网络。当一个组件故障时,它可能导致其他相关组件相继失效,从而引发大规模的系统崩溃。MATLAB作为一种...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...

    级联删除笔记【自用0分】

    级联删除和级联更新是数据库管理中非常重要的概念,特别是在多表关联的情况下,能够确保数据的一致性和完整性。本文将详细介绍如何在SQL Server中实现级联更新和级联删除,包括通过触发器的方式和使用外键约束的方式...

    mysql级联更新和级联删除

    ### MySQL级联更新与级联删除详解 在数据库设计中,外键约束是维护数据完整性和一致性的重要手段之一。MySQL的InnoDB存储引擎支持多种不同的处理外键的方式,包括级联更新(Cascade Update)和级联删除(Cascade ...

    ajax+ssh实现省份城市级联查询

    在此,我们将深入探讨Ajax、Spring、Hibernate和Struts2这四个关键技术以及它们在实现级联查询中的作用。 Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页...

Global site tag (gtag.js) - Google Analytics