2009-11-11 5 views
2

Supposons que j'ai une entité "Employee" et une entité "Address". Un employé a une adresse associée à lui/elle. Dans un sens de base de données relationnelle, la table d'adresses serait considérée comme une entité faible, car une adresse d'employé ne peut pas exister s'il n'y a aucun employé correspondant dans la base de données. Ainsi, supposons que je veux modéliser les éléments suivants:Comment faire une entité faible en utilisant EJB 3.0

Tableau: Employé

EmployeeID | Nom

Tableau Adresse

EmployeeID | StreetName

Pour la table Employee, la clé primaire est EmployeeID. Pour la table Address, la clé primaire est EmployeeID, mais c'est aussi une clé étrangère à la table Employee. Comment modéliserais-tu ceci dans EJB 3.0 en utilisant j2ee? Lorsque je crée une classe d'entité appelée Employee, je peux définir l'annotation @id au-dessus de employeeId afin de marquer cet attribut comme clé primaire. Cependant, lorsque je crée une entité Adresse, je veux définir l'attribut employeeID à la fois comme une clé primaire et étrangère (reliez-la à la table Employee). Y a-t-il une annotation pour cela? J'espère avoir clarifié ma question. Merci.

db

Répondre

3

Il est probablement pas une bonne idée de la carte Adresse en tant qu'entité distincte - non seulement est sa durée de vie contrôlée par son propriétaire (par exemple employé) comme vous le dites, mais vous ne voulez pas partager la Même instance d'adresse entre différents employés.

Tenir compte la cartographie comme @Embeddable au lieu:

@Embeddable 
public class Address { 
    private String streetName; 
    ... 
} 

@Entity 
public class Employee { 
    @Embedded 
    private Address address; 
    ... 
} 

Notez que la carte ci-dessus des colonnes d'adresses à la table des employés; Si vous préférez conserver une table séparée, vous pouvez l'écraser en utilisant l'annotation @JoinTable.

Questions connexes