我正在寻找如何删除关系的寄存器一对多/多对一。问题是当我执行EntityManager.remove()时,所有记录都被删除,我希望删除唯一的孩子(DiasTurma)而不是您的父级(Turma)。
我是这样尝试的
// parent
@Entity
public class Turma implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
@NotNull @Column(unique = true)
private String turmaNome;
@OneToMany(mappedBy = "turma", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private List<DiasTurma> diasTurma = new ArrayList<DiasTurma>();
//gets/sets
//child
@Entity
public class DiasTurma implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue
private Integer id;
private String horaInicio;
private String horaFim;
private String diaSemana;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "id_turma")
private Turma turma;
//gets/sets
// DAO
/** remove DiasTurma of Turma */
public void removeDiasTurma(){
DiasTurma dias = (DiasTurma)em.find(DiasTurma.class, 3);
em.getTransaction().begin();
em.remove(dias);
em.getTransaction().commit();
em.close();
}
方法
例如,如何仅删除记录3?
问题是我做EntityManager时。remove(),所有记录都被删除,我希望唯一的孩子(DiasTurma)被删除,而不是你的父母(Turma)
发生这种情况是因为您明确要求级联删除:
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
由于您指定了烹调=ALL
,因此在DiasTurma上完成的每个操作,包括的删除()
,都会级联到其父Turma。
问题内容: 假设我有两个实体: 然后,我要保留“客户”实体,然后,参照先前添加的“客户”保留“订单”实体。当我从数据库中检索此客户并调用getOrders时,它将返回空集。这是正常行为吗?如果是,当我添加新的Order实体时,我该怎么做以自动刷新此集合? 问题答案: Jpa不会为您维护关系,因此应用程序需要设置双向关系的两端,以使它们与数据库保持同步。当您设置了order-> customer关系
我在将带有@ManyToOne关系的实体(雇员)映射到带有@OneToMany关系的实体(社区)时遇到了问题。 当我将一个实体(社区)分配给一个实体(员工),其中社区的值为空时,它工作正常。 问题出现了,如果雇员已经为社区分配了价值。当我更改该值并保存更改时,该员工为社区获得了新的值,并且这个新社区在集合中获得了该员工。唯一的问题是,老社区仍然有这个员工在收集,但它应该被删除。这只有在数据库重新启
问题内容: 我使用Gson 库将Java对象转换为Json响应…问题是,在JPA请求之后,由于与其他实体的递归关系,无法转换从DB检索到的对象: 我的源代码: 如您在这里看到的,我做了: 只是通过为coordonneesList中的每个GPS对象设置null来消除递归关系。 您认为这是一个很好的解决方案,或者还有其他更实用的方法吗?谢谢 问题答案: 有一个名为GraphAdapterBuilder
我试图在用户和地址之间建立双向关系, 用户1-------->*地址 但是 地址1-------->1个用户 我在上网时得到了这些信息 > 对于一对一双向关系,拥有方对应于包含对应外键的方 双向关系的反向侧必须通过使用OneToOne、 OneToMany或ManyToMany批注的mappedBy元素来引用其 所属侧。mappedBy元素指定作为 关系所有者的实体中的属性或字段。 但如果我按照情
OneTomany:Trplist:TargetEntity:TravelRoutePoints MappedBy:route Cascade:[“Persist”,“Remove”]JoinColumn:Name:id引用的ColumnName:tr_id
在我的Spring/MySql系统中,我有一些Jpa实体,它们通过父关系上的joinTable在OneToMany关系中连接。在这种情况下,一个帖子有很多评论。 如果我尝试删除Post实体,问题是生成的SQL试图删除仍在连接表中的注释,从而触发外键冲突。 什么是正确的方法: 删除连接表项 删除连接表左侧父关系实体 删除连接表右侧子关系实体 要记住的一些事情: 还有其他实体通过oneTo多项关系拥有