java持久性跨对象方法访问

java持久性跨对象方法访问,java,hibernate,persistence,javabeans,entitymanager,Java,Hibernate,Persistence,Javabeans,Entitymanager,我以一个Employee和Company类为例。在Java持久化环境(Hibernate)中,当一个bean用它自己的实体管理器处理一个Employee类时,当该对象有它自己的实体管理器时,我如何调用公司类bean方法?我是否必须进行一对一映射,或者是否可以通过应用程序配置调用该方法 谢谢。您可以使用一对一映射。我最近用产品和团队类实现了。我已将产品标记为实体,团队标记为实体。下面是使其工作所需的代码。还有其他配置方法。在下面的配置中,您需要一个表来存储产品,一个表来存储团队,第三个团队来存储p

我以一个Employee和Company类为例。在Java持久化环境(Hibernate)中,当一个bean用它自己的实体管理器处理一个Employee类时,当该对象有它自己的实体管理器时,我如何调用公司类bean方法?我是否必须进行一对一映射,或者是否可以通过应用程序配置调用该方法


谢谢。

您可以使用一对一映射。我最近用产品和团队类实现了。我已将产品标记为实体,团队标记为实体。下面是使其工作所需的代码。还有其他配置方法。在下面的配置中,您需要一个表来存储产品,一个表来存储团队,第三个团队来存储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;
    }

}