2009-06-01 6 views
4

Ich verwende eine Konvention zum Voranstellen von Feldnamen mit einem Unterstrich. Wenn ich Annotate-Entity-Klassen mit solchen Feldern erzeuge, bleibe ich bei der Verwendung der Unterstrich-Präfix-Eigenschaftsnamen in Abfragen. Ich mag, dass vermeiden, und in der Lage sein zu tun:Ändern von Eigenschaftsnamen in JPA-Abfragen

@Entity 
public class Container { 

    private String _value; 
} 

// in a lookup method 
executeQuery("from Container where value = ?", value); 

Ist das möglich mit JPA im allgemeinen oder insbesondere Ruhezustand?


Update: Noch zu erinnern versuchen, warum, aber ich brauche diese auf Felder kommentierten werden anstatt auf Getter.

Antwort

4

können Sie den Getter mit Anmerkungen versehen:

@Entity 
public class Container { 

    private String _value; 

    @Column 
    public String getValue() 
    { 
     return _value; 
    } 

    public void setValue(String value) 
    { 
     this._value = value; 
    } 

} 
+0

Wahrscheinlich keine Option, wenn die Klasse generiert wird. – skaffman

1

Sie könnten vielleicht Unterklassen Ihrer generierten Entitätsklassen schreiben, die Getter-Methoden verwenden, und dann den Entity Manager so konfigurieren, dass er stattdessen Getter/Setter-Zugriff verwendet, wenn Feldzugriff? Dann könnten Ihre Getter/Setter einen beliebigen Namen haben.

0

Werfen Sie einen Blick auf NamingStrategy. Es wäre ziemlich einfach, die DefaultNamingStrategy zu erweitern und die columnName Methode zu überschreiben, um den ersten Unterstrich (wenn es da ist) zu entfernen.

+0

Sind Sie sicher, dass dies in Eigenschaftsnamen und nicht in Datenbankspaltennamen behandelt wird? Das Javadoc gibt an, dass es "eine Reihe von Regeln zum Ermitteln der physischen Spalten- und Tabellennamen unter Berücksichtigung der Informationen im Mapping-Dokument" ist. –

+0

Hmm, du hast Recht. Hibernate behandelt nur die Eigenschaft (oder das Feld) für die Datenbankzuordnung. Es gibt keinen anderen Namen, den Sie verwenden können. Diese Lösung wird Ihnen richtige Namen in der Datenbank geben, aber Ihre Eigenschaftsnamen (in HQL- oder Criteria-Abfragen) haben immer noch den Unterstrich. Ich denke, Sie können nur den anderen Vorschlag verwenden und den Getter dafür verwenden. –