2016-10-05 3 views
0

のデフォルト値を休止状態Country.java私はJPA /休止状態</p> <p>を使用しています@JoinColumn

@Column(nullable = false, name = "REGION") 
private String region; 

@Id 
@Column(nullable = false, name = "CODE") 
private String Code; 

User.java

@Column(nullable = false, name = "NAME") 
private String name; 

@NaturalId 
@ManyToOne 
@JoinColumn(name = "COUNTRY") 
private Country country; 

私は、デフォルト値を設定することができます方法はありますhibernateのcountryカラムのUser.javaの@joinColumnのために?

+0

http://stackoverflow.com/questions/197045/setting-このリンクを参照してください。 default-values-for-columns-in-jpaこれは何らかの形で役に立つかもしれません。 –

答えて

0

hibernateのcountryカラムのUser.javaの@joinColumnのデフォルト値を設定できる方法はありますか?

columnDefinition field in @JoinColumnを使用できますが、これは最適ではないデータベースに依存します。

@PrePersist方法は、よりよい解決策かもしれません:この回答を参照して、他の選択肢の例については

public class User { 
    ... 
    @PrePersist 
    public void prePersist() { 
     if (country == null) { 
      country = new Country("US"); 
     } 
    } 

Setting default values for columns in JPA

+0

国が現在自分のDBに存在しない列の場合。ですから、スキーマのアップグレードは@naturalIdで非nullableである必要があるため、どのようにアップグレードされるのかよく分かりません。既存のレコードを国の列のデフォルト値に更新する必要があるので、私はこの質問をしていました – banes

+0

あなたの国のIDまたは何かがあなたの 'User'テーブルの@banesにありますか?または、それは結合テーブルにありますか?それにかかわらず、 '@ PrePersist'は動作するはずです。 – Gray

関連する問題