À l'aide de @Id pour de multiples domaines dans la même classe

Je suis un newbie de mise en veille prolongée et à l'appui d'une application existante qui utilise Hibernate
C'est une pure application de reporting - pas d'insert /update /delete - ne sélectionne que

Je peux voir les objets POJO qui ont l'annotation @Id utilisé dans plus d'un domaine dans la même classe

Ma compréhension était que pour une clé primaire composite - vous besoin d'utiliser @Embeddable et @EmbeddedId

Cependant, ce n'est pas définie dans ma classe et, chose étrange, le code compile et fonctionne correctement

Voici un exemple de mon code :

package com.xyz.vo;

import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;

@Entity(name="com.xyz.vo.Emp")
@Table(name = "TEmployee")
public class Emp implements Serializable    {
private java.lang.Integer  empId;
@Id 
@Column(name = "EMP_ID")   
public java.lang.Integer  getEmpId(){   
    return this.empId;
}

public  void  setEmpId(java.lang.Integer empId){    
    this.empId=empId;
}

private java.lang.Integer  empAge;
@Id 
@Column(name = "EMP_AGE")   
public java.lang.Integer  getEmpAge(){  
    return this.empAge;
}

    public  void  setEmpAge(java.lang.Integer empAge){  
    this.empAge=empAge;
}

    private String empName;
    @Column(name = "EMP_NAME")   
public String  getEmpName(){    
    return this.empName;
}

    public  void  setEmpName(String empName){   
    this.empName=empName;
}

et beaucoup plus de champs dans le pojo - qui n'ont pas le @Id défini

NOTE - ici deux champs ont l'annotation @Id

Je suis confus pourquoi cette compile et fonctionne ?
Merci
akila

OriginalL'auteur akila | 2013-11-06