2016-04-25 3 views
0

ここでまたはGoogleで回答が見つかりませんでした。Hibernate + H2はyes_noタイプの列を更新しません

は私の問題は、以下である:
Iは、データベース内

public class MyEntity { 

    @Column(name = "IS_DELETED") 
    @Type(type = "yes_no") 
    private Boolean itemDeleted = Boolean.FALSE; 
} 

yes_no型カラムでエンティティを持って、カラムはCHAR(1)

IS_DELETED CHAR(1) CHECK ("IS_DELETED" IN ('Y', 'N')) 

次のコードポーズ私のJUnitテストでのH2の問題(アプリケーション実行時にOracleとうまくいく):

myEntityRepositoryService.save(myEntity); 

ではなく、 yes_noタイプのすべての列が正しく更新されます。コミットが発生したかどうか、トランザクションがリリースされたかどうかを確認するためにいくつかのハイバネートログを有効にしました。すべての列は正しく更新されますが、yes_no列は更新されません。

私は、保存の直前のコードで乱数のような他のフィールドにいくつかのランダムな値を設定しようとしました。それは動作し、値は保存されますが、ブール値の列は保存されません。リポジトリサービスがorg.springframework.data.jpa.repository.JpaRepository

延びていることが

注は、Hibernate YesNoTypeの既知の問題はありますか?私は何か間違っているのですか? H2に特別な設定が必要ですか?

+0

これに対する答えを見つけましたか?私はH2とgrailsと同様の問題を抱え、生産に移っています。データベースが再作成されたときにはうまく動作しますが、実稼働環境では更新されます。 – John

答えて

0

問題はH2ではありません。代わりに、JpaRepositoryはおそらくHibernateを利用していません。他の実装(例:EclipseLink)ではなく、Hibernate EntityManagerを使用していることを確認してください。

+0

私はすでにHibernate Entity Managerを使用しています。私はそれがそうでなければOracleと一緒に働くことさえ確信していません。しかしお返事いただきありがとうございます:) – Mannekenpix

+0

クイックテストとして、代わりに '@Type(type =" yes_no ")'を削除し、itemDeletedを 'Boolean'から' String'に変更し、それを "Y"に設定するか、それらの更新が持続するかどうかを見るために "N"また、IS_DELETEDという名前の列がないことを確認してください。これは何らかの問題を引き起こす可能性があるためです。 –

+0

文字列フィールドは正しく保持され、ブール型のYesNoTypeにのみ問題があります。 – Mannekenpix

関連する問題