允许JPA@ManyToOne关系中的空引用(Play!Framework)
我对问这个问题所需的术语有点不熟悉,但我们会看看我是否能正确回答 我有一个JPA实体,它表示几个其他实体的连接,称为UserJump:允许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; }
@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的方式翻译)