значение столбца jpa по умолчанию для настраиваемого класса

Если у меня есть такая сущность 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

Как я могу это решить?

2 ответа

Решение

В классе пользователя:

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().

Это работает, я сделал это.

Вам нужно сопоставить ваши LoginCredentialс user поле и Userкласс с использованием отношений сущностей JPA.

Читать:

Другие вопросы по тегам