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

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

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

JPA雙向多對多關(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屬性指向被映射表的主鍵(可以沒有該屬性)
	//@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賬號)、Role<->Domain(用戶OneToMany權(quán)限域)的關(guān)系來舉例。  

1、ManyToMany

Role表

Account表

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

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

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

2、OneToMany以及ManyToOne

Role表

Domain表

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

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

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

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

相關(guān)文章

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

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

    這篇文章主要介紹了Windows下apache ant安裝、環(huán)境變量配置教程,ANT的安裝很簡單,本文同時(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)的一個茶葉售賣商城系統(tǒng),應(yīng)用到的技術(shù)有Jsp、SSM 、EasyUi,文中的示例代碼具有一定的學(xué)習(xí)價(jià)值,需要的朋友可以參考一下
    2021-12-12
  • Java8 Predicate花樣用法詳解

    Java8 Predicate花樣用法詳解

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

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

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

    Java中2個對象字段值比較是否相同

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

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

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

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

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

    maven+springboot打成jar包的方法

    這篇文章主要介紹了maven+springboot打成jar包的方法,非常不錯,具有一定的參考借鑒價(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ù)不會影響系統(tǒng)狀態(tài),也不用擔(dān)心重復(fù)執(zhí)行會對系統(tǒng)造成改變,需要的朋友可以參考下
    2023-10-10

最新評論

永州市| 军事| 赣州市| 航空| 枝江市| 监利县| 文安县| 分宜县| 确山县| 诸城市| 莱芜市| 七台河市| 卢湾区| 龙江县| 都昌县| 巴林右旗| 上杭县| 延长县| 淮安市| 监利县| 巩留县| 两当县| 海林市| 杭州市| 绥棱县| 抚州市| 英山县| 留坝县| 麻江县| 和政县| 余姚市| 邮箱| 溧水县| 鹰潭市| 炉霍县| 吐鲁番市| 金塔县| 怀来县| 昔阳县| 南乐县| 铅山县|