在Play中删除@OneToMany关系的JPA对象!骨架

时间:2012-02-10 21:49:12

标签: jpa playframework persistence

我正在尝试删除Play中的对象!但是我收到了这个错误:

PersistenceException occured : org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

我的猜测是我内部声明的@OneToMany关系存在问题。不过我不确定。这是我的实体的声明:

@Entity
public class JumpSession extends GenericModel{
public JumpSession()
{
    sessionUID = java.util.UUID.randomUUID().toString();
}
//***********JPA relationships
@Id
public String sessionUID;

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

@ManyToOne
public User jumpMaster;
//**********end JPA relationships

public String inspectorUID;
public String packDetailUID;
public String aadsn;
public String aadType;
public String dropzone;
public String jumpType;
public String sessionName;
@As("MM/dd/yyyy")
public Date createdOn;
@As("MM/dd/yyyy")
public Date jumpDate;
public String startNotes;
public String endNotes;
public String notes;
public String startTime;
public int status;
}

当我删除JumpSession时,我需要UserJump条目只指向null而不是JumpSession。这是我用来删除对象的简单代码:

JumpSession jumpSession = JumpSession.findById("blah");
jumpSession.delete();

编辑: UserJump的相关部分:

@Entity
public class UserJump extends Model{

@ManyToOne
public JumpSession jumpSession;
}

即使没有JumpSession,UserJump还有许多其他部分仍然是独一无二的。有没有办法允许jumpSession引用为null

编辑: 我打算在这个问题上提出一个新问题,因为我的问题已经改变了。目前的答案符合原来的问题。

1 个答案:

答案 0 :(得分:0)

您的userJumps仍然引用了jumpSession。首先删除userJumps将解决问题。

如果由于某种原因你想保留UserJump,那么你需要从userJumps中删除对jumpSession的引用