Problemet är förmodligen din id-genereringsstrategi (förutsatt att du initierat kontakten ordentligt). Användarobjektet måste infogas i DB för att få sitt id inställt, men samtidigt behöver kontakten detta id för att vara ett giltigt objekt. ske i samma transaktion.
Om du ändrar loggningsnivån till fin för din JPA (i perstitance.xml), kommer du troligen att se sekvensen för att infoga användaren och kontakten men kontakten kommer att ha user_id 0.
Så, a) se till att du uttryckligen ställer in användaren i din kontakt (som du sa att relationen hanteras av Contact. b) Sätt kontakt på användaren. c) kvarstår (i en transaktion). Beroende på din JPA-implementering kanske det fortfarande inte fungerar (kontrollera frågorna som utfärdats, troligen kommer det att infogas vid kontakt och sedan uppdatera). Ändra genereringsstrategin till TABLE, med TABLE tar JPA nästa lediga ID, tilldelar det till objektet och gör infogningen så att den är "känd" före infogningen.