Que signifie @AtsortingbuteOverride?

Je suis actuellement en train de (revenir) à la vitesse avec EJB et pendant mon absence, cela a radicalement changé (jusqu’ici pour le mieux). Cependant, j’ai rencontré un concept avec lequel j’ai du mal à comprendre et que j’aimerais mieux comprendre car il semble être utilisé assez souvent dans notre code (où je travaille, pas avec moi et toutes les voix que j’ai en tête).

Voici l’exemple que j’ai trouvé dans un livre. Cela fait partie d’un exemple montrant comment utiliser l’annotation @EmbeddedId :

 @Entity public class Employee implements java.io.Serializable { @EmbeddedId @AtsortingbuteOverrides({ @AtsortingbuteOverride(name="lastName", column=@Column(name="LAST_NAME"), @AtsortingbuteOverride(name="ssn", column=@Column(name="SSN")) }) private EmbeddedEmployeePK pk; ... } 

La classe EmbeddedEmployeePK est une classe @Embeddable relativement simple qui définit une paire de @Columns : lastName et ssn .

Oh, et j’ai levé cet exemple de Enterprise JavaBeans 3.1 de O’Reilly par Rubinger & Burke.

Merci d’avance pour toute aide que vous pouvez me donner.

Il dit que les atsortingbuts qui constituent l’ID incorporé peuvent avoir des noms de colonne prédéfinis (via des mappages explicites ou implicites). En utilisant le @AtsortingbuteOverride vous dites “ignorez les autres informations dont vous disposez concernant la colonne dans laquelle il est stocké et utilisez celui que je spécifie ici”.

AttributeOverride

Dans la classe UserDetails, j’ai remplacé homeAddress & officeAddress avec l’ Address

Ce POJO à une adresse agira pour deux tables dans la firebase database.

DB:

 Table1 Table2 STREET_NAME HOME_STREET_NAME CITY_NAME HOME_CITY_NAME STATE_NAME HOME_STATE_NAME PIN_CODE HOME_PIN_CODE 

La classe EmbeddedEmployeePK est une classe @Embeddable relativement simple qui définit une paire de @Columns: lastName et ssn.

Pas tout à fait – EmbeddedEmployeePK définit une paire de propriétés , qui sont ensuite mappées sur des colonnes. Les annotations @AtsortingbuteOverride vous permettent de remplacer les colonnes auxquelles les propriétés de la classe incorporée sont mappées.

Le cas d’utilisation est lorsque la classe incorporable est utilisée dans différentes situations où ses noms de colonne diffèrent, et un mécanisme est nécessaire pour vous permettre de modifier ces mappages de colonne. Par exemple, supposons que vous ayez une entité contenant deux instances distinctes du même élément incorporable. Elles ne peuvent pas mapper les mêmes noms de colonnes.

Vous pouvez également remplacer d’autres propriétés de colonne (pas uniquement des noms).
Supposons que vous souhaitiez modifier la longueur du SSN en fonction de l’intégration de votre composant. Vous pouvez définir un @AtsortingbuteOverride pour la colonne comme ceci:

 @AtsortingbuteOverrides({ @AtsortingbuteOverride(name = "ssn", column = @Column(name = "SSN", length = 11)) }) private EmbeddedEmployeePK pk; 

Voir “2.2.2.4. Objets incorporés (aussi appelés composants)” dans la documentation Hibernate Annotations.

Afin de préserver les autres propriétés @Column (telles que name et nullable ), conservez-les dans la colonne remplacée comme vous l’avez indiqué dans la colonne d’origine.

JPA essaie de mapper les noms de champs aux noms de colonnes dans une source de données. Vous voyez donc ici la traduction entre le nom d’une variable de champ et le nom d’une colonne dans une firebase database.