pureQuery erkennt Annotationen auf Eigenschaftenebene nur bei allgemein zugänglichen Eigenschaften und bei den allgemein zugänglichen Methoden get() oder set(). Bei privaten oder geschützten Eigenschaften werden diese Annotationen nicht erkannt.
Eine Beschreibung der in diesem Syntaxdiagramm verwendeten Konventionen finden Sie in Informationen zum Lesen von Syntaxdiagrammen.
Gibt die SQL-Spalte in einem Datenbankobjekt an, der eine Eigenschaft zugeordnet ist. Sie können diese Annotation nur bei allgemein zugänglichen Eigenschaften und Methoden verwenden. Wird sie anderweitig verwendet, wird sie von pureQuery ignoriert.>>-@Column--(--name--=--Spaltenname--+------------------------+->< '-table--=--Tabellenname-'
Sie können die Annotation @Column aus den folgenden beiden Gründen verwenden:
@Column(name="DEPTNO") public String deptNum;
@Column(name="EMPNO") public String getEmpNum() { return empNum; }
Beispiel
select a.col1, b.col1 from a, b where a.id=b.id;Die Methoden set() für die entsprechenden Eigenschaften in den Beans, die die Abfrageergebnisse aufnehmen, benötigen die Annotationen @Column, die den Namen der Tabelle angeben, in der die beiden Spalten id auftreten:
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 {...
Eine Beschreibung der in den Syntaxdiagrammen verwendeten Konventionen finden Sie in Informationen zum Lesen von Syntaxdiagrammen.
>>-@ColumnOverride--(--propertyName--=--"--Eigenschaft--",--column--=--"--Name--")-><
>>-@ColumnOverrides--(------------------------------------------> .-,-------------------------------------------------------------------------------. V | >--{----@ColumnOverride--(--propertyName--=--"--Eigenschaft--",--column--=--"--Name--")-+--}--> >--)-----------------------------------------------------------><
Beachten Sie, dass das Array mit den @ColumnOverride-Annotationen in geschweiften Klammern innerhalb der runden Klammern für die Annotation @ColumnOverrides steht.
Beispiel
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))Einige der Spaltennamen sind abgekürzt oder entsprechen nicht den Java™-Namenskonventionen.
Die folgende Definition für eine Bean 'Employee' verwendet @Column-Annotationen, um aussagekräftigere Namen für die Benutzer von Objekten der Klasse com.company.Employee bereitzustellen.
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; } }
Angenommen, es wird eine Anwendung auf einer Datenbank mit leicht abweichendem Schema ausgeführt. Die Tabelle wird wie folgt definiert:
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))
Sie können eine Unterklasse für die Bean 'Employee' bilden, um die vorherige Annotation zu überschreiben, damit mit der neuen Tabellendefinition gearbeitet werden kann. Der Anfang der Unterklasse könnte wie folgt aussehen:
@ColumnOverride(propertyName="extension", column="PHONE") public class EmployeeNewCo extends Employee {...