У меня есть отношения ManyToOne между Родителем и Ребенком. Я хочу удалить несколько дочерних объектов, которые отвечают на определенный запрос.
Проблема в том, что после выполнения запроса на удаление, Parent.getChildren () по-прежнему возвращает удаленные дочерние элементы.
Разве я не могу использовать запросы удаления в таком случае?
@Entity
@Table(name = "CHILD_DATA")
public class Child {
private Parent parent;
}
@Entity
@Table(name = "PARENT")
public class Parent{
private Set<Child> children;
@Column(name = "CHILDREN")
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
public Set<Child> getChildren() {
return children;
}
}
public class ChildDAO{
public int removeServiceFrontPageData(Parent parent, long serviceID){
String query = "DELETE FROM Child WHERE parent =:parent";
Query q = em.createQuery(query);
q.setParameter("parent", parent);
return q.executeUpdate();
}
}
Чтобы обновить родительский объект, я использую следующую функцию:
public class ParentDAO{
public Parent getParent(String parentID){
final String select = "FROM Parent WHERE parentID = :parentID";
Query q = em.createQuery(select);
q.setParameter("parentID", parentID);
if(q.getResultList().isEmpty()){
return null;
}
return (Parent) q.getSingleResult();
}
}
спасибо