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

允许JPA@ManyToOne关系中的空引用(Play!Framework),jpa,playframework,persistence,many-to-one,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; }

我对问这个问题所需的术语有点不熟悉,但我们会看看我是否能正确回答

我有一个JPA实体,它表示几个其他实体的连接,称为UserJump:

@Entity
public class UserJump extends Model{

    @ManyToOne
    public User user;
    @ManyToOne
    public JumpSession jumpSession;
    @ManyToOne
    public Parachute parachute;
}
@Entity
public class JumpSession extends GenericModel{

    @OneToMany(mappedBy="jumpSession")
    public List<UserJump> userJumps;
}
我有一个JumpSession类,它引用了UserJump:

@Entity
public class UserJump extends Model{

    @ManyToOne
    public User user;
    @ManyToOne
    public JumpSession jumpSession;
    @ManyToOne
    public Parachute parachute;
}
@Entity
public class JumpSession extends GenericModel{

    @OneToMany(mappedBy="jumpSession")
    public List<UserJump> userJumps;
}
@实体
公共类JumpSession扩展了GenericModel{
@OneToMany(mappedBy=“jumpSession”)
公共列表用户跳转;
}
但是,我需要能够删除
JumpSession
对象,同时保留引用它们的任何
UserJump
对象(现在在
JumpSession
上调用
delete()
时,我会得到一个
ConstraintViolationException
),因为
UserJump
对象仍然将其他唯一信息链接在一起。理想情况下,
UserJump
中的
jumpSession
变量将更改为
null


如何执行此操作?

您只需在删除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的方式翻译)