欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JPA双向多对多关联关系@ManyToMany

程序员文章站 2022-04-23 16:54:20
...
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属性设置中间表的表名
	//joinCloums属性在中间表中添加的列
	//JoinColumns属性:
	//				@joinColumn属性设置中间表中的列名
	//						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;
	}

}

相关标签: JPA @ManyToMany