C правильно, присоединения к связям ToMany не должны возвращать дубликаты.JPA-провайдер должен автоматически использовать отчетливый для их фильтрации.Я полагаю, что это то, что требуется для спецификации, хотя это может быть одна из тех менее четко определенных областей спецификации.
Если используется выборка соединения, я считаю, что спецификация действительно требует возврата дубликатов.Что странно, можно понять, почему вы все захотите дубликаты.Если вы добавите отличное в выборку объединения, то они будут отфильтрованы (в памяти, так как все строки должны быть выбраны).
Так работает EclipseLink в любом случае.
Всев других случаях выбирают Книги, а не читателей, поэтому получайте дубликаты, C выбирает Читатели, поэтому дубликаты не должны получаться.