我試圖手動刪除實體集合中的每個實體。問題是,實體不會從數據庫中刪除,即使它們從任務的集合中刪除。從休眠集合中刪除實體
下面是使用代碼IM來實現這一目標:
public int removeExistingCosts(final DataStoreTask task) {
int removedAccumulator = 0;
Query query = entityManager.createNamedQuery(DataStoreCost.GET_COSTS_FOR_TASK);
query.setParameter(DataStoreCost.TASK_VARIABLE_NAME, task);
try {
List costsForTask = query.getResultList();
for(Object cost : costsForTask) {
task.getCosts().remove(cost);
removedAccumulator++;
}
} catch (NoResultException e) {
logger.debug("Couldn't costs for task: {}", task.getId());
}
entityManager.flush();
entityManager.persist(task);
return removedAccumulator;
}
任何想法?
P.S集合被表示爲:
@OneToMany(targetEntity = DataStoreCost.class, mappedBy = "task", cascade = CascadeType.ALL)
private Collection<DataStoreCost> costs;
乾杯。
是的,在for循環中調用'entityManager.remove(cost);'。 – Kai