2009-05-04 8 views
2

私たちのスキーマ用にHibernate NamingStrategyを作成しています。プロパティタイプの情報を使用するHibernate NamingStrategy

従来のスキーマ(何らかの理由で!)には、列名に型情報が含まれています。たとえば:

strproperty 
intcustomer 

私はNamingStrategyをインターフェイスから次のメソッドを実装しています:

public String propertyToColumnName(String propertyName) 

私は私達の命名戦略は、このような実装することができるように、私は、上記のプロパティのJavaタイプを知りたいのですがその:

public String getProperty() { 
    return this.property() 
} 

はstrpropertyに自動的にマップされます。引数の便宜上

は(私は、このメソッドは存在しません知っている)、これは私が働いて、それを考えるような方法であると言う:

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

が命名内からJavaプロパティの種類を確認する方法はありますHibernateのコンベンションフック?

ありがとうございます。

答えて

1

私はインターフェイスがこのことを念頭に置いて設計されたとは思わない - 一見、それはいないようpropertyToColumnName()の呼び出し側が問い合わせているものクラス知るどのような方法がありますようにしかし程度

javadocのpropertyToColumnName()は、 "プロパティパス式の列名"を返します。実際にクラス名で完全修飾されている場合は、クラス名を解析し、そのクラスのリフレクションを使用してプロパティの型を決定することができます。

また、(あなたがそれらを使用している場合、私は推測したり、注釈に)あなたは常にあなたのマッピングファイルに直接カラム名を指定することができます忘れないでください:

<プロパティ名=「何とか」列=を」 intblah "/ >

これは簡単な方法です。

+0

プロパティパスはクラスに対して相対的です。つまり、不幸にもプロパティ名を取得するだけです。 明示的なマッピングも使用しています(注釈を使用しています)が、あまり明示的でない列マッピングはより優れているため、命名戦略で多くの作業を完了しようとしています。 ご回答いただきありがとうございます。 – bowsie

関連する問題