0

私はこれらのエンティティを持っています:

@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クエリで同じことをより速く(フェッチせずに)実行できますか?

4

2 に答える 2

0

はい。JPQL仕様にはいくつかの例もあります

 DELETE FROM Publisher pub WHERE pub.revenue > 1000000.0
于 2012-11-14T13:04:49.887 に答える
0

クエストではなく、タスクの側面からマップを表示するだけであれば、マップをまったく考慮する必要がないことに気づきました。

DELETE FROM ActiveTask t WHERE t.activeQuest = :quest AND t.task = :taskname

于 2012-11-14T13:08:47.357 に答える