我有这些实体:
@Entity
public class ActiveQuest {
@OneToMany(orphanRemoval=true,cascade=CascadeType.ALL,mappedBy="activeQuest")
@MapKey(name="task")
private Map<String, ActiveTask> activeTasks = Maps.createHash();
}
@Entity
public class ActiveTask implements Serializable {
@ManyToOne(optional=false)
private ActiveQuest activeQuest;
}
从我当前正在执行的ActiveTask
中删除ActiveQuest
:
final ActiveQuest aq = em.find(....);
aq.getActiveTasks().remove(task);
我可以使用单个JPQL查询更快地执行相同操作(无提取)吗?
答案 0 :(得分:0)
是。 JPQL specification甚至有一些例子
DELETE FROM Publisher pub WHERE pub.revenue > 1000000.0
答案 1 :(得分:0)
我意识到如果我只是从任务的一边查看它而不是任务,我根本不需要考虑Map。
DELETE FROM ActiveTask t WHERE t.activeQuest = :quest AND t.task = :taskname