Здравствуйте, Blazkowicz, Вы писали:
B>@org.hibernate.annotations.NotFound(action=NotFoundAction.IGNORE)
Да, я в курсе

. Скорее всего, по этому пути и придется идти.
Два момента:
1. Изначально так не сделал поскольку мне все-таки хотелось отслеживать случаи с несуществующим экземпляром C и, как минимум, логировать их появления. В случае с ловлей исключения это было сделать проще. В случае использования @NotFound придется вводить дополнительную проверку на NULL, руками фильтровать результаты, что кмк сделает код менее понятным.
2. Все-таки любопытно разобраться в причинах такого поведения Hibernate. Мне оно кажется крайне нелогичным. Не смог загрузить обьект (ObjectNotFound) — зачем при этом портить всю сессию, делая невозможной дальнейшую работу?