【问题标题】:configurate the persistance entities配置持久性实体
【发布时间】:2017-05-15 14:19:25
【问题描述】:

enter image description here

我正在为一个已经存在的项目使用 Java Persistence API,如图所示,每个人都有一个相关的员工根据他的 id 来保证。在我使用休眠逆向工程来生成实体之前,但我没有知道如何处理这种情况。如果可以帮助我将“Adminisitrateur”实体链接到保证,以便在其他术语中使用相同的每个“管理员”有亲属保证,如果可能的话,我将不胜感激,几乎没有解释。

这里是实体的持久化代码: 用户实体:

package persistence;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity(name = "User")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String prenom;
    @Column(unique = true)
    private String matricule;
    private String password;
    @Column(unique = true)
    private String email;

    @OneToMany(mappedBy = "employer", fetch = FetchType.EAGER)
    private Set<Demande> demandes;
    private static final long serialVersionUID = 1L;

    public User() {
    }


    public User(String name, String prenom, String matricule, String password, String email) {
        super();
        this.name = name;
        this.prenom = prenom;
        this.matricule = matricule;
        this.password = password;
        this.email = email;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Set<Demande> getDemandes() {
        return demandes;
    }

    public void setDemandes(Set<Demande> demandes) {
        this.demandes = demandes;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }


    public String getMatricule() {
        return matricule;
    }


    public void setMatricule(String matricule) {
        this.matricule = matricule;
    }


    public static long getSerialversionuid() {
        return serialVersionUID;
    }

}

雇主实体:

package persistence;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;

/**
 * Entity implementation class for Entity: Employer
 *
 */
@Entity

public class Employer extends User implements Serializable {

    @OneToMany(mappedBy = "employerRelative", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Assure> assures;
    private static final long serialVersionUID = 1L;

    public Employer() {

    }

    public Employer(String name, String prenom, String matricule, String password, String email) {
        super(name, prenom, matricule, password, email);
    }

    public List<Assure> getAssures() {
        return assures;
    }

    public void setAssures(List<Assure> assures) {
        this.assures = assures;
    }

    public void linkAssures(List<Assure> assures) {
        this.assures = assures;
        for (Assure a : assures) {
            a.setEmployerRelative(this);
        }
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

}

管理实体:

package persistence;

import java.io.Serializable;


import javax.persistence.*;
import persistence.User;

/**
 * Entity implementation class for Entity: Administrateur
 *
 */
@Entity

public class Administrateur extends User implements Serializable {


    private static final long serialVersionUID = 1L;


    public Administrateur() {
        super();
    }

    public Administrateur(String name, String prenom, String login, String password, String email) {
        super(name, prenom, login, password, email);
        // TODO Auto-generated constructor stub
    }





}

保证实体: 包持久化;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;

/**
 * Entity implementation class for Entity: Assure
 *
 */
@Entity

public class Assure extends User implements Serializable {
    @ManyToOne
    private Employer employerRelative;
    private String type;
    private static final long serialVersionUID = 1L;

    public Assure() {
        super();
    }

    public Assure(String name, String prenom, String matricule, String password, String email) {
        super(name, prenom, matricule, password, email);
    }

    public Employer getEmployerRelative() {
        return employerRelative;
    }

    public void setEmployerRelative(Employer employerRelative) {
        this.employerRelative = employerRelative;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

}

【问题讨论】:

    标签: hibernate jpa jpa-2.0 openejb


    【解决方案1】:

    这里我们谈论的是用户类的扩展。使用休眠用户类执行此操作不应使用@Entity 进行注释。您应该使用@MappedSupperClass 或更好的@Inheritance 注释。

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多