我正在使用 Hibernate 5 和 Spring 3.2.4。我正在设计一个用户实体,我想在其中包含对创建实体的用户的引用 - 所以是一个自我引用。自引用本身并没有太大问题,但我想将该字段指定为非空。这可能吗?如果字段不为空,因为引用的实体尚不存在,如何在数据库中创建第一个条目?
前任:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long User.id;
@NotNull
private String username;
private String password;
@NotNull
private User user;
// getters and setters omitted for brevity
}
如果我尝试:
User u = new User();
u.setUsername("username");
u.setCreatedBy(u);
并尝试坚持u
,我收到以下错误消息:
Caused by: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation: com.domain.User.createdBy -> com.domain.User
我知道 Hibernate 抱怨它不能引用瞬态实例(即:) ,但除非我有一个可以引用的非空用户,否则我u
不能坚持下去。u
但是在一个空的数据库中,没有这样的条目。
这种配置是不可能的吗?或者有没有办法解决这个问题?