Разрешить нулевую ссылку в отношениях JPA @ManyToOne (Play! Framework) - PullRequest
0 голосов
/ 13 февраля 2012

Я немного незнаком с условиями, необходимыми для того, чтобы задать этот вопрос, но посмотрим, смогу ли я понять его правильно.

У меня есть объект JPA, представляющий объединение нескольких других объектов, который называется UserJump:

@Entity
public class UserJump extends Model{

    @ManyToOne
    public User user;
    @ManyToOne
    public JumpSession jumpSession;
    @ManyToOne
    public Parachute parachute;
}

У меня есть класс JumpSession, который ссылается на UserJump:

@Entity
public class JumpSession extends GenericModel{

    @OneToMany(mappedBy="jumpSession")
    public List<UserJump> userJumps;
}

Однако мне нужно иметь возможность удалять JumpSession объекты, сохраняя при этом любые UserJump объекты, которые к ним относятся (сейчас я получаю ConstraintViolationException, когда я вызываю delete() для JumpSession),поскольку объект UserJump все еще связывает воедино другую уникальную информацию.В идеале переменная jumpSession в UserJump должна быть изменена на null.

Как я могу это сделать?

1 Ответ

0 голосов
/ 13 февраля 2012

Вам просто нужно изменить UserJump перед удалением JumpSession:

for (UserJump uj : jumpSession.getUserJumps()) {
    uj.setJumpSession(null); 
    // now the UserJump doesn't reference the soon-to-be-deleted JumpSession anymore
}
session.delete(jumpSession);

(примечание: выше приведен традиционный код Java Hibernate. Я не знаю, как перевести это в стиль Play)

...