gpt4 book ai didi

java - 使用 JPA 使用 @ElementCollection 从 @CollectionTable 中删除条目

转载 作者:行者123 更新时间:2023-12-02 09:33:38 25 4
gpt4 key购买 nike

我有一个如下所示的实体。它被简化了,因为我无法发布原始代码,但它应该足以理解这个想法。

重点是:

使用 EntityManager 我可以删除 my_table 表中的条目。到目前为止,一切都很好。现在我还需要删除 my_mapping_table 中的条目,但我不知道如何执行此操作。

使用上面的 EntityManager 可能不起作用,因为该字段不是 Entity

有什么想法可以从该表中删除条目或截断它吗?

@Data
@NoArgsConstructor
@Entity
@Builder
@AllArgsConstructor
@Table(name = "my_table")
public class MyTable {

@ElementCollection(targetClass = SomeClass.class)
@CollectionTable(name = "my_mapping_table", joinColumns = @JoinColumn(name = "id_1", referencedColumnName = "id_2"))
@Column(name = "someclass_enum")
@Convert(converter = SomeClassConverter.class)
private Set<SomeClass> setOfSomeClass = new HashSet<>();
}

最佳答案

@ElementCollection 通过其父实体进行管理。要删除它们,您必须首先获取其父实体,然后简单地清除集合。

首先在 MyTable 上创建一个方法来清除其所有 ElementCollection :

@Entity
public class MyTable {

public void removeAllSomeClass(){
this.setOfSomeClass.clear();
}
}

删除特定 MyTable 记录的所有 ElementCollection:

MyTable row1 = entityManager.find(MyTable.class,1);
row1.removeAllSomeClass();

因此,要截断 my_mapping_table 中的所有条目:

for(MyTable tbl : em.createQuery("from MyTable", MyTable.class).getResultList()){
tbl.removeAllSomeClass();
}

关于java - 使用 JPA 使用 @ElementCollection 从 @CollectionTable 中删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com