没有Q类时如何使用QueryDSL删除?

时间:2019-09-03 11:38:11

标签: querydsl

我有以下内容:

@Entity
public class Step {
...
@ElementCollection(fetch = FetchType.EAGER)
@MapKeyColumn(name = "InfoType")
@MapKeyEnumerated(EnumType.STRING)
@CollectionTable(name = "Info", joinColumns = @JoinColumn(name = "StepId"))
@Column(name = "Value", length = 100)
private Map<InfoType, String> infos = new HashMap<>();
...
}

InfoType类只是一个枚举。

在转换为表Step和另一个表Info的数据库中。 Info表具有Step的外键。

我想做的是通过查询删除Step条记录。首先,由于FK,我需要从Info表中删除,但没有为Info生成Q类。有没有办法使用QueryDSL编写这样的查询?

1 个答案:

答案 0 :(得分:0)

@ElementCollection注释操作始终是级联的。当您删除Step实体时,该操作将级联到@ElementCollection

但是,级联操作仅在通过EntityManager完成操作时才有效。如果您尝试通过自定义查询批量删除实体,则操作不会级联。

可能的解决方案是获取要删除的所有Step个实体,并为每个实体调用delete方法。

相关问题