1

У меня есть ассоциация «один-ко-многим» из учреждения -> Курс, где учреждение может обрабатывать несколько курсов. Для этот случай использования считать Курс может принадлежать только одному учреждению.Как удалить элемент коллекции, не получая ее из ассоциации «один-ко-многим», используя критерии спящего режима или hql?

@Entity 
Institution { 
@Id 
long id; 
@JoinTable(name = "INSTITUTION_COURSES", joinColumns = @JoinColumn(name = "INSTITUTION_ID"), inverseJoinColumns = @JoinColumn(name = "COURSE_ID")) 
Set<Course> coursesOffered; 
} 

@Entity 
Course{ 
@Id 
long id; 
@Column 
String name; 
} 

И их карта хранится в отдельной таблице

Как я могу удалить курс с помощью HQL или Hibernate критериев не извлекая объект Institution и связанную с ним коллекцию такой, что соответствующие строки в таблице отображения также удаляются.

ответ

0

Вы делаете что-то подобное внутри транзакционного контекста? ...

Institution institution = institutionDAO.findById(institutionId, false); 
institution.getCourses().remove(course); 

institution = institutionDAO.mergeState(institution); 
+0

Благодарим за ответ. Но ваша реализация выбирает учреждение и курсы, а затем удаляет курс. Я ищу критерии или hql-запрос, который может удалить курс и связанную с ним картографическую информацию, не получая учебного заведения и все его курсы. –

+0

Это хороший вопрос, и я также хотел бы знать, как это сделать. Недавно мне пришлось использовать NativeQuery для этого, потому что я не мог найти способ с API-интерфейсом Criteria. Можете ли вы улучшить свой вопрос, включив отображение? Также переименуйте этот вопрос, чтобы указать, что вы хотите удалить участника коллекции, не выбирая его. – carbontax

+0

Пожалуйста, найдите обновленный вопрос и описание. Информация о карте хранится в отдельной таблице instit_curs. Поэтому мой вопрос заключается в том, как я могу удалить курс, чтобы связанная информация о сопоставлении также была удалена. –

 Смежные вопросы

  • Нет связанных вопросов^_^