我正在尝试在 JPA 中保存一个 SystemUser 实体。我还想保存某些内容,例如谁创建了 SystemUser 以及谁最后修改了系统用户。
@ManyToOne(targetEntity = SystemUser.class)
@JoinColumn
private SystemUser userWhoCreated;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(iso=ISO.DATE_TIME)
private Date timeCreated;
@ManyToOne(targetEntity = SystemUser.class)
@JoinColumn
private SystemUser userWhoLastModified;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(iso=ISO.DATE_TIME)
private Date timeLastModified;
我还想确保这些值在持久化时不为空。因此,如果我使用 NotNull JPA 注释,这很容易解决(连同对另一个实体的引用)
问题描述很简单,如果我要使用 DataLoader 类来持久化 JPA 实体,我无法在系统中没有 rootuser 的情况下保存 rootuser。以后的每个其他用户都可以轻松地将 userWhoModified 持久化为“systemuser”,但不能在此方案中添加自己的 systemuser。
有没有办法坚持这个第一个系统用户(我正在考虑使用 SQL)。我想这是一个典型的引导程序(鸡或蛋)问题。