0

如果我有这样的实体,private Boolean test; 我可以像这样设置它的默认值:@Column(columnDefinition = "boolean default false")

但我的问题是如何为我的自定义类设置默认值?

假设我有一User堂课,像这样:

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

public class LoginCredential {
  @Id 
  @GeneratedValue 
  Long userID;
  String eMail;
   @OneToOne(mappedBy = "loginCredential", fetch = FetchType.LAZY)
   User user;
};

如何设置默认值User,以便在创建时LoginCredential也得到一个User

我尝试User user=new User()在构造函数中进行设置。两者都给了我例外。

例外 :

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

我该如何解决这个问题?

4

2 回答 2

0

您需要使用JPA实体关系在您LoginCredentialuser字段和User类之间进行映射。

读:

于 2019-09-18T05:32:03.627 回答
0

在用户类中:

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() 放在那里。

它有效,我已经这样做了。

于 2020-02-13T03:59:29.573 回答