web-dev-qa-db-ja.com

Hibernate列名の問題

@Column(name="DateOfBirth")
private Date dateOfBirth;

「DateOfBirth」という名前の列を作成するには、上記のコードが特に必要です。代わりに、Hibernateによってdate_of_birthという名前の列が表示されます。どうすればこれを変更できますか? web.xmlプロパティはありますか? DefaultNamingStrategyとImprovedNamingStrategyに出くわしましたが、どちらを指定するかわかりません。

19
lucas

考えられる回避策は次のとおりです。dateofbirthという名前を付けると、DBの列にはそのような名前が付けられますが、属性名は同じである必要があります。

Hibernateは、キャメルケース形式を使用してデータベース列を作成/読み取ります。

私は以前にこの問題を抱えていました。列名「employeename」、「employeerole」、「departmentlocation」にスペースがないレガシー列を使用しました。私の豆のプロパティはすべてキャメルケースなしでなければならなかったので、私はそれを嫌います。

「_」で区切られたデータベース列は、今見たように適切にキャメルケースに使用されます。

9
OscarRyz

参考:アンダースコアを挿入する理由は、おそらく ImprovedNamingStrategy を使用しているためです。 Configuration オブジェクトに設定されます。例については ここ を参照してください...

アンダースコアが必要ない場合は、名前付け戦略を設定することも、以前に発見したDefaultNamingStrategyに設定することもできません。

34
Dan Vinton

これを入れてみてください

application.properties

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
26
Rahul Singh

スプリングブーツの場合は以下のプロパティを追加してください。

spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

6
JavaDev

ゲッターに@Columnアノテーションを配置します。

@Column(name="DateOfBirth")
public Date getDateOfBirth() {
...
}
6
Ryan Anderson

提案された回避策は、@ Column(name = "dateofbirth")を使用することでした。これは、私の目的には有効でした。

4
lucas

ImprovementNamingStrategyには、tableName()およびcolumnName()から呼び出されるメソッドaddUnderscores()があり、独自の命名戦略クラスを実装して、選択に応じてこれらをオーバーライドできます。

    public class MyOwnNamingStrategy extends ImprovedNamingStrategy {
        @Override
        public String tableName(String tableName) {
        //return addUnderscores(columnName); // skip this
        return columnName; // if you want column name variable name same
        //return changeAsYouWant(columnName); // as name sames
       }
   }
4
syedmuneer

100%確信はありませんが、プライベート変数ではなくgetメソッドに注釈を付ける必要はありませんか?

1
davetron5000

フィールドまたはゲッターメソッドのいずれかに注釈を付けることができますが、違いはありません。完全なhibernate.cfg.xmlまたはpersistence.xmlファイルを投稿できますか?

1
cliff.meyers