Quest
私は多くのsを含むエンティティを持っていますTask
:
@Entity
public class Quest {
@OneToMany(orphanRemoval=true,cascade=CascadeType.ALL)
@JoinColumn(name="quest_id")
@MapKey(name="taskName")
private Map<String, Task> tasks = Maps.createHash();
@ElementCollection
@OrderColumn
private Set<String> completedTasks;
@Entity
public class Task implements Serializable {
@ManyToOne(optional=false)
@JoinColumn(name="quest_id")
private Quest quest;
@Column(nullable=false,updatable=false,length=50)
private String taskName;
今私がこれをするとき:
// store the task as completed
quest.getCompletedTasks().add(taskName); // set
// remove the task entity
quest.getTasks().remove(taskName); // map
Hibernateは無意味なクエリを実行しようとしますが、失敗します。
update Task set quest_id=null where quest_id='77149'
これは、クエストとそのすべてのタスク( )の間の接続を切断するWHERE quest_id = ...
ように見えます。これは、クエスト自体が削除されたときに何かを行うように思えます(そうではありません)。いずれにせよ、それは何もヌルにするべきではなくDELETE
、Task
完全にすべきです。
なにが問題ですか?