Problém je pravděpodobně ve vaší strategii generování id (za předpokladu, že jste kontakt správně inicializovali). Objekt uživatele musí být vložen do DB, aby bylo nastaveno jeho id, ale zároveň kontakt potřebuje, aby toto id bylo platným objektem. Oba musí proběhnou ve stejné transakci.
Pokud přepnete úroveň protokolování pro váš JPA na jemnou (v perstitance.xml), pravděpodobně uvidíte sekvenci vkládání uživatele a kontaktu, ale kontakt bude mít user_id 0.
Takže a) ujistěte se, že jste ve svém kontaktu explicitně nastavili uživatele (jak jste řekli, že vztah spravuje kontakt. b) Nastavte kontakt na uživatele. c) přetrvávají (v jedné transakci). V závislosti na vaší implementaci JPA to stále nemusí fungovat (zkontrolujte zadané dotazy, pravděpodobně dojde k vložení kontaktu a následné aktualizaci). Změňte strategii generování na TABLE, s TABLE JPA vezme další volné ID, přiřadí ho objektu a provede vložení tak, aby bylo „známé“ před vložením.