2010-03-27 5 views
3

J'ai une table contenant la clé primaire et la clé étrangère qui référence la même table. Comment puis-je mettre en œuvre cette cartographie en veille prolongée ... la structure des tables est la suivante ..mappage un à plusieurs dans la même table dans Hibernate

Dept (
    deptno pk, 
    dname, 
    location 
) 

employee (
    empid pk, 
    ename, 
    Manager Id Foregin key references Employee(empid), 
    deptno Foregin key references dept(deptno), 
    doj date, 
) 
+0

monsieur @pascal s'il vous plaît donner une réponse .. – saurabh

+0

Qu'avez-vous essayé? Il n'y a pas de différence particulière dans le mappage d'un un vers plusieurs à soi-même qu'à toute autre entité. –

+0

@donoroby pouvez-vous s'il vous plaît fournir le fichier de cartographie des tables ci-dessus .. En fait, je ne sais pas comprendre comment mapper .... – saurabh

Répondre

6

Si la relation est bidirectionnelle, vous pourriez avoir quelque chose comme ceci:

@Entity 
public class Employee implements Serializable { 
    private Long empid; 
    private String ename; 
    private Employee manager; 
    private Set<Employee> employees = new HashSet<Employee>(); 
    private Dept deptno; 
    private Date doj; 

    @Id 
    @GeneratedValue 
    public Long getEmpid() { 
     return empid; 
    } 

    public void setEmpid(Long empid) { 
     this.empid = empid; 
    } 

    @ManyToOne 
    public Employee getManager() { 
     return manager; 
    } 

    public void setManager(Employee manager) { 
     this.manager = manager; 
    } 

    @OneToMany(mappedBy = "manager") 
    public Set<Employee> getEmployees() { 
     return employees; 
    } 

    public void setEmployees(Set<Employee> employees) { 
     this.employees = employees; 
    } 

    @ManyToOne 
    public Dept getDeptno() { 
     return deptno; 
    } 

    public void setDeptno(Dept deptno) { 
     this.deptno = deptno; 
    } 

    // ... 
} 

Rien de fantaisie pour Dept:

@Entity 
public class Dept implements Serializable { 
    private Long deptno; 
    private String dname; 
    private String location; 

    @Id 
    @GeneratedValue 
    public Long getDeptno() { 
     return deptno; 
    } 

    public void setDeptno(Long deptno) { 
     this.deptno = deptno; 
    } 

    // ... 
} 
+0

thanx monsieur pour votre réponse .. – saurabh

Questions connexes