2016-10-05 60 views
0

我使用JPA Hibernate的默認值/休眠爲@JoinColumn

Country.java

@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; 

有沒有我可以設置默認值的方法在User.java中的@joinColumn在冬眠國家列?

+0

參考此鏈接http://stackoverflow.com/questions/197045/setting- default-values-for-columns-in-jpa這在某種程度上對你有幫助。 –

回答

0

有沒有一種方法可以在User.java中設置@joinColumn的默認值以供hibernate中的country列使用?

您可以使用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

如果國家是目前在我的數據庫中不存在的列。所以我不確定模式升級會如何發生,因爲它需要是@naturalId和不可空的?我在問這個問題,因爲我需要將現有記錄更新爲國家/地區列的默認值 – banes

+0

您的用戶表中右側的@banes中有一個國家ID或某個國家/地區?或者它在連接表中?無論如何,'@ PrePersist'應該可以工作。 – Gray