2016-10-05 37 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