Я только что заметил, что часть кода, над которой я работал, дважды сохраняет одну и ту же сущность. Я пробовал несколько уловок, например flush () и Transaction REQUIRES_NEW, но ничего не помогло. Но во время отладки я вижу, что после вызова persist (entity) я получаю идентификатор (IDENTITY) для этого объекта ... но чуть позже в коде, если я посмотрю на переменные, я увижу тот же объект с другой идентификатор и две группы с этими идентификаторами в таблице.
Это использует Java EE 6 с Glassfish 3.0.1