A mio avviso l'hashset (non permettendo l'inserimento di chiavi doppie) ti restituisce solo 2 valori, perchè dalla lista escono effettivamente solo 2 valori distinti.
Quindi il problema è sicuramente nella lista restituita.
Il post che hai linkato non mi aiuta.
Il suggerimento che ti do è quello di far visualizzare la query che Hibernate effettivamente fa sul DB (impostando la specifica proprietà).
Ho come la sensazione che tu stia inconsapevolmente facendo una query del tipo:
che manda in confusione tutti i db.codice:select * from TABLE where a = a
Spero aiuti,
ciauz