------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
本篇博客将讲述Hibernate中的关联查询,及其级联(cascade)操作,以及指定哪一方维护关联关系的(inverse)
一,讲述目录如下:
1.单向一对多:(增加一个区县及其它以下的对应街道)
2.单项一对多:(查询一个区县,以及它下面所有的对应街道)
3.单项多对一:(查询一个指定的街道,并同时展示出其对应的区县)
4.双向一对多(多对一):(值得注意:toString()套路不对容易引发错误Error------StackOverflowError)
5.inverse的使用和详解:(指定哪一方来维护关联关系)
6.级联删除:(删除主表中的数据,同时将会干掉外键是它的数据,慎用!!!!!!)
注:其实还想讲一下多对多,但是没有准备,下篇博客会详细总结;
二,单向一对多:(增加一个区县及其它以下的对应街道) 1.简介:
我会在此案例下做好全部准备工作,其他的案例会在此案例上做略改操作:
2.实体类的准备:2.1:District区县实体类:
package cn.dawn.day03.entity; import java.util.ArrayList; import java.util.List; /** * Created by Dawn on 2018/5/30. */ /*区县*/ public class District { private Integer id;//区县id private String name;//区县名称 /*一个区县对应多个街道*/ private List<Street> streets=new ArrayList<Street>(); @Override public String toString() { return "District{" + "id=" + id + ",\'' + ", streets=" + streets + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Street> getStreets() { return streets; } public void setStreets(List<Street> streets) { this.streets = streets; } public District() { } public District(Integer id, String name, List<Street> streets) { this.id = id; this.name = name; this.streets = streets; } public District(Integer id, String name) { this.id = id; this.name = name; } }