jpa自定义类的默认列值 [英] jpa default column value of custom class
问题描述
如果我有这样的实体私有布尔测试;
我可以这样设置其默认值: @Column(columnDefinition = boolean default错误)
If I have an entity like this private Boolean test;
I can set its default value like this: @Column(columnDefinition = "boolean default false")
但是我的问题是如何为自定义类设置默认值?
假设我有一个 User
类,例如:
Assume I have a User
class, like this:
public class User {
@Id
@GeneratedValue
Long userID;
String eMail;
@OneToOne(fetch = FetchType.LAZY,targetEntity = LoginCredential.class)
@JoinColumn(name = "userID",referencedColumnName = "userID")
@JsonIgnore
private LoginCredential loginCredential;
}
和 LoginCredential
this:
public class LoginCredential {
@Id
@GeneratedValue
Long userID;
String eMail;
@OneToOne(mappedBy = "loginCredential", fetch = FetchType.LAZY)
User user;
};
如何设置默认值 User
,这样当我创建 LoginCredential
时,我也会得到一个 User
。
How can I set a default value of User
, so that when I create LoginCredential
I get a User
too.
我尝试了 User user = new User()
并在构造函数中进行设置。两者都给了我例外。
I tried User user=new User()
and setting in the constructor. Both gave me exception.
例外:
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mua.cse616.Model.LoginCredential.user -> com.mua.cse616.Model.User
我该如何解决?
推荐答案
在用户类别中:
public static User defaultUser(){
return new User();// or any user you want to use
// just don't use the id field, else it will start populating the user database, then it won't be the same value right.. ;)
}
现在您要保存LoginCredential的位置,只需将User.defaultUser()放在那里。
Now where you are saving LoginCredential , just put User.defaultUser() there.
它起作用了,我已经做到了。
It works, I have done this.
这篇关于jpa自定义类的默认列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!