pureQuery reconnaît les annotations de niveau de propriété uniquement pour les propriétés publiques et les méthodes publiques get() ou set(). Il ne reconnaît pas ces annotations sur des propriétés protégées ou confidentielles.
Pour comprendre les conventions utilisées dans le diagramme de syntaxe, voir Comment lire les diagrammes de syntaxe.
Indique la colonne SQL dans un objet de base de données mappé par une propriété. Cette annotation est utilisable uniquement pour les propriétés et méthodes publiques. Si vous l'utilisez en d'autres endroits, pureQuery l'ignore.>>-@Column--(--nom--=--nom_de_colonne--+------------------------+->< '-table--=--nom_de_table-'
L'annotation @Column peut être utilisée pour deux raisons :
@Column(name="DEPTNO") public String deptNum;
@Column(name="EMPNO") public String getEmpNum() { return empNum; }
Exemple
select a.col1, b.col1 from a, b where a.id=b.id;les méthodes set() pour les propriétés correspondantes dans les beans contenant les résultats de requête doivent inclure des annotations @Column indiquant le nom de la table dans laquelle apparaissent les deux colonnes id :
public class JoinExample{ private int a_id; private int b_id; @Column (name="id", table="a") public void setA_id (int a_id) { this.a_id = a_id; } public int getA_id () { return a_id; } @Column (name="id", table="b") public void setB_id (int b_id) { this.b_id = b_id; } public int getB_id () { return b_id; } }
@ColumnOverride(propertyName="extension", column="PHONE") public class EmployeeNewCo extends Employee {...
Pour comprendre les conventions utilisées dans les diagrammes de syntaxe, voir Comment lire les diagrammes de syntaxe.
>>-@ColumnOverride--(--propertyName--=--"--propriété--",--column--=--"--nom--")-><
>>-@ColumnOverrides--(------------------------------------------> .-,----------------------------------------------------------------------------. V | >--{----@ColumnOverride--(--propertyName--=--"--propriété--",--column--=--"--nom--")-+--}--> >--)-----------------------------------------------------------><
Remarque : le groupe d'annotations @ColumnOverride apparaît entre accolades dans les parenthèses des annotations @ColumnOverrides.
Exemple
CREATE TABLE HRDEPT.EMPLOYEE( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1), LASTNAME VARCHAR(15), WORKDEPT CHAR(2), PHONENO CHAR(4), HIREDATE DATE, PRIMARY KEY(EMPNO))Certains noms de colonnes sont abrégés ou ne suivent pas les conventions de dénomination Java.
La définition suivante de bean Employee utilise des annotations @Column pour attribuer des noms plus adaptés aux utilisateurs d'objet de la classe com.company.Employee.
public class Employee { private String employeeId; private String firstName; private String middleInitial; private String lastName; private String departmentId; private String extension; private Date hireDate; @Column(name = "EMPNO") public String getEmployeeId () { return employeeId; } public void setEmployeeId (String employeeId) { this.employeeId = employeeId; } @Column(name = "FIRSTNME") public String getFirstName () { return firstName; } public void setFirstName (String firstName) { this.firstName = firstName; } @Column(name = "MIDINIT") public String getMiddleInitial () { return middleInitial; } public void setMiddleInitial (String middleInitial) { this.middleInitial = middleInitial; } public String getLastName () { return lastName; } public void setLastName (String lastName) { this.lastName = lastName; } @Column(name = "WORKDEPT") public String getDepartmentId () { return departmentId; } public void setDepartmentId (String departmentId) { this.departmentId = departmentId; } @Column(name = "PHONENO") public String getExtension () { return extension; } public void setExtension (String extension) { this.extension = extension; } public Date getHireDate () { return hireDate; } public void setHireDate (Date hireDate) { this.hireDate = hireDate; } }
Maintenant, admettons qu'une application s'exécute sur une base de données avec un schéma légèrement différent. La table est définie comme suit :
CREATE TABLE HRDEPTNEWCO.EMPLOYEE( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1), LASTNAME VARCHAR(15), WORKDEPT CHAR(2), PHONE CHAR(4), HIREDATE DATE, PRIMARY KEY(EMPNO))
Vous pouvez sous-classer le bean Employee pour qu'il remplace l'annotation précédente, pour vous permettre de travailler avec la nouvelle définition de table. Le début de la sous-classe peut se présenter ainsi :
@ColumnOverride(propertyName="extension", column="PHONE") public class EmployeeNewCo extends Employee {...