Нет бы сенсея спросить с чего такое может быть, но нет мы же умные и у нас трафик еще есть — отправился гуглить. Часа полтора ушло на эту проблему, а может и побольше чуток. Как оказалось это не бага, а фича. Причем сенсей был о ней неплохо осведомлен.
В общем смотрите решение :)
1. fetch="LAZY"
если вам необходимо использовать EAGER, то используем следующее
2. заменяем Collection и List в которых у нас находятся связанные сущности на Set и наслаждаемся тем что все проходит на ура.
Пример
Было
protected List<Group> groups = new ArrayList<Group>();
Стало
protected Set<Group> groups = new HashSet<Group>();
P.S.: народ а что лучше использование аннотаций в entity или описывать сущности в orm.xml?