значение столбца 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.
Читать:
- Множественность отношений сущностей в учебнике Oracle по JavaEE 7
- Связи сущностей в руководстве пользователя Hibernate