самоссылающийся объект в JPA - PullRequest
1 голос
/ 25 мая 2010

Я пытаюсь сохранить объект SystemUser в JPA. Я также хочу сохранить некоторые вещи, например, кто создал 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, это легко решается (вместе со ссылкой на другую сущность)

Описание проблемы простое, я не могу сохранить rootuser без наличия rootuser в системе, если я хочу использовать класс DataLoader для сохранения сущности JPA. Любой другой более поздний пользователь может быть легко сохранен с userWhoModified как «systemuser», но сам systemuser не может быть добавлен в эту схему.

Есть ли способ так сохранить этот первый системный пользователь (я думаю, с SQL). Полагаю, это типичная проблема с начальной загрузкой (курица или яйцо).

1 Ответ

1 голос
/ 25 мая 2010

Вы пробовали rootUser.setUserWhoLastModified(rootUser)?

...