Problemet er sandsynligvis din id-genereringsstrategi (forudsat at du initialiserede kontakten korrekt). Brugerobjektet skal indsættes i DB for at få sit id sat, men samtidig skal kontakten have dette id for at være et gyldigt objekt. De skal begge ske i samme transaktion.
Hvis du ændrer logningsniveauet til fint for din JPA (i persitance.xml), vil du højst sandsynligt se rækkefølgen af indsættelse af bruger og kontakt, men kontakten vil have user_id 0.
Så, a) sørg for, at du udtrykkeligt angiver bruger i din kontakt (som du sagde, at relationen administreres af kontakt. b) Indstil kontakt på brugeren. c) fortsætter (i én transaktion). Afhængigt af din implementering af JPA virker det muligvis stadig ikke (tjek de stillede forespørgsler, sandsynligvis vil der være indsat ved kontakt og derefter opdatere). Skift genereringsstrategien til TABLE, med TABLE tager JPA det næste ledige ID, tildeler det til objektet og laver indsættelsen, så det er "kendt" før indsættelsen.