在JPA @ManyToOne关系中允许空引用(Play!Framework)

时间:2012-02-13 17:42:16

标签: jpa playframework persistence many-to-one

我对提出这个问题所需的条款有点不熟悉,但我们会看看能否做到这一点。

我有一个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 :(得分:0)

您只需在删除JumpSession之前修改UserJump:

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的方式进行翻译)