java持久性跨对象方法访问
我以一个Employee和Company类为例。在Java持久化环境(Hibernate)中,当一个bean用它自己的实体管理器处理一个Employee类时,当该对象有它自己的实体管理器时,我如何调用公司类bean方法?我是否必须进行一对一映射,或者是否可以通过应用程序配置调用该方法java持久性跨对象方法访问,java,hibernate,persistence,javabeans,entitymanager,Java,Hibernate,Persistence,Javabeans,Entitymanager,我以一个Employee和Company类为例。在Java持久化环境(Hibernate)中,当一个bean用它自己的实体管理器处理一个Employee类时,当该对象有它自己的实体管理器时,我如何调用公司类bean方法?我是否必须进行一对一映射,或者是否可以通过应用程序配置调用该方法 谢谢。您可以使用一对一映射。我最近用产品和团队类实现了。我已将产品标记为实体,团队标记为实体。下面是使其工作所需的代码。还有其他配置方法。在下面的配置中,您需要一个表来存储产品,一个表来存储团队,第三个团队来存储p
谢谢。您可以使用一对一映射。我最近用产品和团队类实现了。我已将产品标记为实体,团队标记为实体。下面是使其工作所需的代码。还有其他配置方法。在下面的配置中,您需要一个表来存储产品,一个表来存储团队,第三个团队来存储productid和teamid
***Product Class**
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.codehaus.jackson.annotate.JsonBackReference;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@Entity
@Table(name="Product")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Product implements Serializable{
/**
*
*/
private static final long serialVersionUID = -5392649457041674962L;
@Id
@Column(name="productId")
@GeneratedValue
private Long productId;
@Column(name="productName")
private String productName;
@Column(name="productHasVariations")
private String productHasVariations;
@Column(name="productImgPath")
private String productImgPath;
@Column(name="productDesc")
private String productDesc;
// //---------------------------------------item mapped to league------------------------------------------//
@JsonBackReference
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinTable(
name="ProductLeague",
joinColumns= @JoinColumn(name="productId"),
inverseJoinColumns = @JoinColumn(name="leagueId")
)
private League league;
// //--------------------------------------------------------------------------------------------------------//
//
// //---------------------------------------item mapped to category------------------------------------------//
@JsonBackReference
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(
name="ProductCategory",
joinColumns= @JoinColumn(name="productId"),
inverseJoinColumns = @JoinColumn(name="categoryId")
)
private Category category;
// //--------------------------------------------------------------------------------------------------------//
//
// //---------------------------------------item mapped to team------------------------------------------//
@JsonBackReference
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(
name="ProductTeam",
joinColumns= @JoinColumn(name="productId"),
inverseJoinColumns = @JoinColumn(name="teamId")
)
private Team team;
// //--------------------------------------------------------------------------------------------------------//
//
// //---------------------------------------item mapped to flags such as featured, sale, hot, new------------//
@JsonBackReference
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinTable(
name="ProductFlag",
joinColumns= @JoinColumn(name="productId"),
inverseJoinColumns = @JoinColumn(name="flagId")
)
private Flag flag;
//--------------------------------------------------------------------------------------------------------//
//
//---------------------------------------item mapped to sizes ------------//
@JsonBackReference
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@OrderBy("sizeId asc")
@JoinTable(
name="ProductSize",
joinColumns= @JoinColumn(name="productId"),
inverseJoinColumns = @JoinColumn(name="sizeId")
)
private Set<Size> size;
// //--------------------------------------------------------------------------------------------------------//
//---------------------------------------item mapped to prices ------------//
@JsonBackReference
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@OrderBy("priceId asc")
@JoinTable(
name="ProductPrice",
joinColumns = { @JoinColumn(name="productId")
},
inverseJoinColumns = @JoinColumn(name="priceId")
)
private Set<Price> price;
// //--------------------------------------------------------------------------------------------------------//
// //--------------------------------------------------------------------------------------------------------//
//---------------------------------------item mapped to discounts ------------//
@JsonBackReference
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinTable(
name="ProductDiscount",
joinColumns = { @JoinColumn(name="productId")
},
inverseJoinColumns = @JoinColumn(name="discountId")
)
private Discount discount;
// //--------------------------------------------------------------------------------------------------------//
@Transient
private Long productQuantity;
@Transient
private String productPriceBeforeDiscount;
@Transient
private String productPriceAfterDiscount;
@Transient
private String productSelectedSize;
public Flag getFlag() {
return flag;
}
public void setFlag(Flag flag) {
this.flag = flag;
}
public Long getProductId() {
return this.productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public String getProductName() {
return this.productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public void setProductHasVariations(String productHasVariations) {
this.productHasVariations = productHasVariations;
}
public String getProductHasVariations() {
return productHasVariations;
}
public void setLeague(League league) {
this.league = league;
}
public League getLeague() {
return league;
}
public Category getCategory() {
return this.category;
}
public void setCategory(Category category) {
this.category = category;
}
public Team getTeam() {
return this.team;
}
public void setTeam(Team team) {
this.team = team;
}
public String getProductImgPath() {
return productImgPath;
}
public void setProductImgPath(String productImgPath) {
this.productImgPath = productImgPath;
}
public void setProductDesc(String productDesc) {
this.productDesc = productDesc;
}
public String getProductDesc() {
return productDesc;
}
public void setSize(Set<Size> size) {
this.size = size;
}
public Set<Size> getSize() {
return size;
}
public void setPrice(Set<Price> price) {
this.price = price;
}
public Set<Price> getPrice() {
return price;
}
public void setProductQuantity(Long productQuantity) {
this.productQuantity = productQuantity;
}
public Long getProductQuantity() {
return productQuantity;
}
public void setDiscount(Discount discount) {
this.discount = discount;
}
public Discount getDiscount() {
return discount;
}
public void setProductPriceAfterDiscount(String productPriceAfterDiscount) {
this.productPriceAfterDiscount = productPriceAfterDiscount;
}
public String getProductPriceAfterDiscount() {
return productPriceAfterDiscount;
}
public void setProductPriceBeforeDiscount(String productPriceBeforeDiscount) {
this.productPriceBeforeDiscount = productPriceBeforeDiscount;
}
public String getProductPriceBeforeDiscount() {
return productPriceBeforeDiscount;
}
public void setProductSelectedSize(String productSelectedSize) {
this.productSelectedSize = productSelectedSize;
}
public String getProductSelectedSize() {
return productSelectedSize;
}
}
***产品类别**
导入java.io.Serializable;
导入java.util.HashSet;
导入java.util.Set;
导入javax.persistence.CascadeType;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.GeneratedValue;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.JoinTable;
导入javax.persistence.ManyToMany;
导入javax.persistence.manytone;
导入javax.persistence.OneToMany;
导入javax.persistence.OneToOne;
导入javax.persistence.OrderBy;
导入javax.persistence.Table;
导入javax.persistence.Transient;
导入org.codehaus.jackson.annotate.JsonBackReference;
导入org.codehaus.jackson.annotate.JsonIgnoreProperties;
@实体
@表(name=“产品”)
@JsonIgnoreProperties({“HibernateLazInitializer”,“handler”})
公共类产品实现可序列化{
/**
*
*/
私有静态最终长serialVersionUID=-5392649457041674962L;
@身份证
@列(name=“productId”)
@生成值
私有长productId;
@列(name=“productName”)
私有字符串产品名称;
@列(name=“productHasVariations”)
私有字符串的变体;
@列(name=“productImgPath”)
私有字符串productImgPath;
@列(name=“productDesc”)
私有字符串productDesc;
////------------------------------------映射到联盟的项目------------------------------------------//
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@可接合(
name=“ProductLeague”,
joinColumns=@JoinColumn(name=“productId”),
inverseJoinColumns=@JoinColumn(name=“leagueId”)
)
私人联赛;
// //--------------------------------------------------------------------------------------------------------//
//
////------------------------------------映射到类别的项目------------------------------------------//
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@可接合(
name=“ProductCategory”,
joinColumns=@JoinColumn(name=“productId”),
inverseJoinColumns=@JoinColumn(name=“categoryId”)
)
私人类别;
// //--------------------------------------------------------------------------------------------------------//
//
////------------------------------------映射到团队的项目------------------------------------------//
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@可接合(
name=“ProductTeam”,
joinColumns=@JoinColumn(name=“productId”),
inverseJoinColumns=@JoinColumn(name=“teamId”)
)
私人团队;
// //--------------------------------------------------------------------------------------------------------//
//
////------------------------------------映射到特征、销售、热门、新等标志的项目------------//
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@可接合(
name=“ProductFlag”,
joinColumns=@JoinColumn(name=“productId”),
inverseJoinColumns=@JoinColumn(name=“flagId”)
)
私人旗帜;
//--------------------------------------------------------------------------------------------------------//
//
//---------------------------------------映射到大小的项目------------//
@JsonBackReference
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@订购人(“sizeId asc”)
@可接合(
name=“ProductSize”,
joinColumns=@JoinColumn(name=“productId”),
inverseJoinColumns=@JoinColumn(name=“sizeId”)
)
私有集大小;
// //--------------------------------------------------------------------------------------------------------//
//---------------------------------------映射到价格的项目------------//
@JsonBackReference
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@订购人(“priceId asc”)
@可接合(
name=“ProductPrice”,
joinColumns={@JoinColumn(name=“productId”)
},
inverseJoinColumns=@JoinColumn(name=“priceId”)
)
私人定价;
// //--------------------------------------------------------------------------------------------------------//
// //--------------------------------------------------------------------------------------------------------//
//---------------------------------------映射到折扣的项目------------//
@JsonBackReference
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@可接合(
name=“产品折扣”,
joinColumns={@JoinColumn(name=“productId”)
},
inverseJoinColumns=@JoinColumn(name=“discountId”)
)
私人折扣;
// //--------------------------------------------------------------------------------------------------------//
@短暂的
私人长产品数量;
@短暂的
私有字符串productPriceB
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name="Team")
public class Team implements Serializable{
/**
*
*/
private static final long serialVersionUID = 5969057417203282157L;
@Id
@Column(name="teamId")
@GeneratedValue
private Integer teamId;
@Column(name="teamName")
private String teamName;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(
name="ProductTeam",
joinColumns = @JoinColumn(name="teamId"),
inverseJoinColumns = @JoinColumn(name="productId")
)
public Set<Product> product;
public Integer getTeamId() {
return this.teamId;
}
public void setTeamId(Integer teamId) {
this.teamId = teamId;
}
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
public Set<Product> getProduct() {
return product;
}
public void setProduct(Set<Product> product) {
this.product = product;
}
}