我有以下内容:
@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编写这样的查询?
答案 0 :(得分:0)
@ElementCollection
注释操作始终是级联的。当您删除Step
实体时,该操作将级联到@ElementCollection
。
但是,级联操作仅在通过EntityManager完成操作时才有效。如果您尝试通过自定义查询批量删除实体,则操作不会级联。
可能的解决方案是获取要删除的所有Step
个实体,并为每个实体调用delete方法。