最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JPA雙向多對(duì)多關(guān)聯(lián)關(guān)系@ManyToMany

 更新時(shí)間:2022年06月13日 09:34:39   作者:qq_36722039  
這篇文章主要介紹了使用JPA雙向多對(duì)多關(guān)聯(lián)關(guān)系@ManyToMany,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

JPA雙向多對(duì)多關(guān)聯(lián)關(guān)系@ManyToMany

package com.jpa.helloworld; 
import java.util.HashSet;
import java.util.Set;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
 
@Table(name="CATEGORYS")
@Entity
public class Category { 
	private Integer cID; 
	private String cName; 
	private Set<Item> items = new HashSet<Item>();
 
	@Id
	@Column(name="C_ID")
	@GeneratedValue
	public Integer getcID() {
		return cID;
	}
 
	public void setcID(Integer cID) {
		this.cID = cID;
	}
 
	@Column(name="C_NAME")
	public String getcName() {
		return cName;
	}
 
	public void setcName(String cName) {
		this.cName = cName;
	}
	
	//添加了mappedBy屬性則不能使用@JoinTable注解
	@ManyToMany(mappedBy="categorys")
	public Set<Item> getItems() {
		return items;
	}
 
	public void setItems(Set<Item> items) {
		this.items = items;
	} 
}
package com.jpa.helloworld; 
import java.util.HashSet;
import java.util.Set;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
 
@Table(name="ITEMS")
@Entity
public class Item { 
	private Integer iId; 
	private String iName; 
	private Set<Category> categorys = new HashSet<Category>();
 
	@Id
	@GeneratedValue
	@Column(name="I_ID")
	public Integer getiId() {
		return iId;
	}
 
	public void setiId(Integer iId) {
		this.iId = iId;
	}
 
	@Column(name="I_NAME")
	public String getiName() {
		return iName;
	}
 
	public void setiName(String iName) {
		this.iName = iName;
	}
 
	//使用@JoinTable注解添加中間表
	//其中name屬性設(shè)置中間表的表名
	//joinCloums屬性在中間表中添加的列
	//JoinColumns屬性:
	//				@joinColumn屬性設(shè)置中間表中的列名
	//						referencedColumnName屬性指向被映射表的主鍵(可以沒(méi)有該屬性)
	//@inverseJoinColumns另外一張表在中間表中的列
	@JoinTable(
			name="ITEMS_CATEGORYS",
//			joinColumns = {@JoinColumn(name="ITEM_ID",referencedColumnName="I_ID")},
			joinColumns = {@JoinColumn(name="ITEM_ID")},
//			inverseJoinColumns= {@JoinColumn(name="CATEGORY_ID", referencedColumnName="C_ID")})
			inverseJoinColumns= {@JoinColumn(name="CATEGORY_ID")})
	@ManyToMany
	public Set<Category> getCategorys() {
		return categorys;
	}
 
	public void setCategorys(Set<Category> categorys) {
		this.categorys = categorys;
	} 
}

ManyToMany和OneToMany的雙向控制

下面我們使用權(quán)限管理中Role<->Account(用戶ManyToMany賬號(hào))、Role<->Domain(用戶OneToMany權(quán)限域)的關(guān)系來(lái)舉例?! ?/p>

1、ManyToMany

Role表

Account表

在兩個(gè)表的對(duì)應(yīng)屬性上添加JoinColumns和inverseJoinColumns,并且相互交換。

  • JoinColumn指定本表在中間表中的列名。
  • inverseJoinColumns指定受控方的列名。

在兩個(gè)類中都加上這兩個(gè)屬性,并且值互換,則能夠?qū)崿F(xiàn)雙向控制,即任何一方刪除,都會(huì)自動(dòng)刪除對(duì)應(yīng)中間表的數(shù)據(jù)。

2、OneToMany以及ManyToOne

Role表

Domain表

cascade用來(lái)指定級(jí)聯(lián)操作, cascade的值只能從CascadeType.PERSIST(級(jí)聯(lián)新建)、CascadeType.REMOVE(級(jí)聯(lián)刪  除)、CascadeType.REFRESH(級(jí)聯(lián)刷新)、CascadeType.MERGE(級(jí)聯(lián)更新)中選擇一個(gè)或多個(gè)。還有一個(gè)選擇是使用CascadeType.ALL,表示選擇全部四項(xiàng)。

如果不指定Cascade,默認(rèn)是空的,那么在刪除Role的時(shí)候,只會(huì)把Domain表中的role這一列的值刪除,而該條記錄不刪除。

JoinColumn需要指定,如果不指定就會(huì)在Domain表中增加額外的一列,這一列與Domain的id一樣。經(jīng)過(guò)試驗(yàn),不指定還會(huì)造成級(jí)聯(lián)查找失敗,原因未知。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Windows下apache ant安裝、環(huán)境變量配置教程

    Windows下apache ant安裝、環(huán)境變量配置教程

    這篇文章主要介紹了Windows下apache ant安裝、環(huán)境變量配置教程,ANT的安裝很簡(jiǎn)單,本文同時(shí)講解了驗(yàn)證安裝是否成功的方法和使用方法實(shí)例,需要的朋友可以參考下
    2015-06-06
  • Java實(shí)現(xiàn)茶葉售賣商城系統(tǒng)(java+SSM+JSP+EasyUi+mysql)

    Java實(shí)現(xiàn)茶葉售賣商城系統(tǒng)(java+SSM+JSP+EasyUi+mysql)

    這篇文章主要介紹了基于SSM框架實(shí)現(xiàn)的一個(gè)茶葉售賣商城系統(tǒng),應(yīng)用到的技術(shù)有Jsp、SSM 、EasyUi,文中的示例代碼具有一定的學(xué)習(xí)價(jià)值,需要的朋友可以參考一下
    2021-12-12
  • Java8 Predicate花樣用法詳解

    Java8 Predicate花樣用法詳解

    本文主要介紹了Java 8 Predicate花樣用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java刪除ArrayList中的重復(fù)元素的兩種方法

    Java刪除ArrayList中的重復(fù)元素的兩種方法

    在Java編程中,ArrayList是一種常用的集合類,它允許我們存儲(chǔ)一組元素,在某些情況下,我們可能需要移除其中重復(fù)的元素,只保留唯一的元素,下面介紹兩種常見(jiàn)的刪除ArrayList中重復(fù)元素的方法,需要的朋友可以參考下
    2024-12-12
  • Java中2個(gè)對(duì)象字段值比較是否相同

    Java中2個(gè)對(duì)象字段值比較是否相同

    本文主要介紹了Java中2個(gè)對(duì)象字段值比較是否相同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • JAVA?Springboot配置i18n國(guó)際化語(yǔ)言詳細(xì)步驟

    JAVA?Springboot配置i18n國(guó)際化語(yǔ)言詳細(xì)步驟

    國(guó)際化(Internationalization,縮寫為i18n)是指根據(jù)來(lái)展示不同的內(nèi)容,使應(yīng)用程序能夠適應(yīng)不同的語(yǔ)言和文化習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于JAVA?Springboot配置i18n國(guó)際化語(yǔ)言的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種)

    SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種)

    這篇文章主要介紹了SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • maven+springboot打成jar包的方法

    maven+springboot打成jar包的方法

    這篇文章主要介紹了maven+springboot打成jar包的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • java 數(shù)據(jù)結(jié)構(gòu)單鏈表的實(shí)現(xiàn)

    java 數(shù)據(jù)結(jié)構(gòu)單鏈表的實(shí)現(xiàn)

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)單鏈表的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 關(guān)于SpringCloud分布式系統(tǒng)中實(shí)現(xiàn)冪等性的幾種方式

    關(guān)于SpringCloud分布式系統(tǒng)中實(shí)現(xiàn)冪等性的幾種方式

    這篇文章主要介紹了關(guān)于SpringCloud分布式系統(tǒng)中實(shí)現(xiàn)冪等性的幾種方式,冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù),這些函數(shù)不會(huì)影響系統(tǒng)狀態(tài),也不用擔(dān)心重復(fù)執(zhí)行會(huì)對(duì)系統(tǒng)造成改變,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

普兰县| 乐昌市| 岚皋县| 辽宁省| 三亚市| 昆明市| 安宁市| 沂源县| 宝丰县| 阿勒泰市| 福鼎市| 朝阳区| 新平| 息烽县| 广元市| 中江县| 康乐县| 衢州市| 江川县| 利津县| 腾冲县| 陈巴尔虎旗| 汕头市| 呼玛县| 拉萨市| 禹州市| 靖州| 巨野县| 岐山县| 雷州市| 宁强县| 闽侯县| 肥城市| 镇远县| 黑龙江省| 宁陵县| 湘潭县| 读书| 靖边县| 腾冲县| 凤凰县|