2009-05-04 6 views
2

Ich schreibe eine Hibernate NamingStrategy für unser Schema.Informationen zum Eigenschaftentyp Hibernate NamingStrategy

Unser Legacy-Schema (aus irgendeinem Grund!) Enthält Typinformationen in Spaltennamen. Zum Beispiel:

strproperty 
intcustomer 

Ich bin der Umsetzung der folgenden Methode aus der NamingStrategy Schnittstelle:

public String propertyToColumnName(String propertyName) 

Ich möchte den Java-Typ der Immobilie über wissen, so dass ich unsere Namensgebung Strategie verfolgen, wie implementieren könnte das:

würde zu strproperty automatisch zugeordnet werden.

Für Argumente willen sagen, dass dies die Art, wie ich ins Auge fassen würde, daran zu arbeiten (ich weiß, diese Methode nicht existiert):

public String propertyToColumnName(Object propertyName, Class propertyType) { 
    if (propertyType instanceof String) { 
     return "str" + propertyName; 
    } else { 
     return "int" + propertyName; 
    } 
} 

Gibt es eine Möglichkeit, die Art der Java-Eigenschaft innerhalb der Namensgebung zu ermitteln Konvention Haken in Hibernate?

Vielen Dank im Voraus.

Antwort

1

Ich glaube nicht, dass die Schnittstelle in diesem Sinne ausgelegt ist - auf den ersten Blick scheint es nicht wie es eine Möglichkeit, zu wissen, welche Klasse der Anrufer von propertyToColumnName() ist anfragende

über

jedoch Beachten Sie, dass die Javadocs für propertyToColumnName() sagen, dass es "... einen Spaltennamen für eine Eigenschaft Pfadausdruck" zurückgibt. Es könnte sich lohnen zu untersuchen, was String von Hibernate an diese Methode übergeben wird: Wenn es tatsächlich vollständig mit dem Klassennamen qualifiziert ist, können Sie den Klassennamen analysieren und Reflektion über diese Klasse verwenden, um den Eigenschaftstyp zu bestimmen.

Alternativ vergessen Sie nicht immer Spaltennamen direkt in Ihren Mapping-Dateien angeben können (oder in Ihren Anmerkungen, wenn Sie sie verwenden, glaube ich):

< property name = "blah" column =“ intblah "/ >

was ein einfacherer Ansatz sein könnte.

+0

Der Eigenschaftspfad ist relativ zur Klasse, mit anderen Worten, Sie erhalten nur den Namen der Eigenschaft leider. Ich verwende auch explizite Zuordnungen (ich verwende Annotationen), aber die weniger expliziten Spaltenzuordnungen, desto besser, weshalb ich versuche, so viel Arbeit in der Benennungsstrategie zu erledigen. Vielen Dank für Ihre Antwort! – bowsie

Verwandte Themen