2010-06-18 12 views
6

Ich möchte ein Wertobjekt zu einer zugeordneten Klasse hinzufügen, wobei eine Spalte abhängig von der Klasse, die die Komponente enthält, festgelegt ist. Wie kann ich so etwas tun?Konstante in Hibernate-Mapping-Dateien

<component name="aComponent"> 
    <property name="abc" column="cde"/> 
    <property name="xyz" value="FIXED"/> 
</component> 

Leider existiert das Wertattribut nicht. Gibt es eine andere Möglichkeit, einen konstanten Wert auf die Eigenschaft anzuwenden?

Vielen Dank im Voraus.

Antwort

4

Sie sollten eine Formel verwenden, z.

<property name="xyz" formula="1" type="big_decimal"/> 

Aus Java Persistenz mit Hibernate, ch. 4.4.1:

Die angegebene SQL Formel jedes Mal ausgewertet wird das Unternehmen von der Datenbank abgerufen wird (und nicht zu jeder anderen Zeit, so das Ergebnis veraltet sein kann, wenn andere Eigenschaften modifiziert werden). Die Eigenschaft hat kein Spaltenattribut (oder Subelement) und erscheint nie in einer SQL INSERT oder UPDATE, nur in SELECT s. Die Formeln können sich auf Spalten der Datenbanktabelle beziehen, sie können SQL-Funktionen aufrufen, , und sie können sogar SQL-Subselects enthalten. Der SQL-Ausdruck wird unverändert an die zugrunde liegende Datenbank übergeben. Dies ist eine gute Möglichkeit, Ihre Zuordnungsdatei an ein bestimmtes Datenbankprodukt zu binden, wenn Sie nicht vorsichtig sind und sich auf herstellerspezifische Operatoren oder Schlüsselwörter verlassen.