jpa自定义类的默认列值 [英] jpa default column value of custom class

查看:242
本文介绍了jpa自定义类的默认列值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有这样的实体私有布尔测试; 我可以这样设置其默认值: @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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆