sql >> Database >  >> RDS >> Mysql

SpringDataJPA save OneToOne-relatie ophalen Kan geen onderliggende rij toevoegen of bijwerken:een externe-sleutelbeperking mislukt

Het probleem is waarschijnlijk uw strategie voor het genereren van id's (mits u de contactpersoon correct hebt geïnitialiseerd). Het gebruikersobject moet in de database worden ingevoegd om de id in te stellen, maar tegelijkertijd heeft de contactpersoon deze id nodig om een ​​geldig object te zijn. gebeuren in dezelfde transactie.

Als u het logniveau voor uw JPA op fijn zet (in perstitance.xml), ziet u hoogstwaarschijnlijk de volgorde waarin de gebruiker en het contact worden ingevoegd, maar het contact heeft user_id 0.

Dus, a) zorg ervoor dat u expliciet de gebruiker in uw contactpersoon instelt (zoals u zei, de relatie wordt beheerd door Contact. b) Stel het contact in op de gebruiker. c) volharden (in één transactie). Afhankelijk van uw JPA-implementatie werkt het mogelijk nog steeds niet (controleer de vragen die zijn gesteld, hoogstwaarschijnlijk zullen er bij contact worden ingevoegd en vervolgens worden bijgewerkt). Verander de generatiestrategie in TABLE, waarbij TABLE JPA de volgende vrije ID neemt, deze toewijst aan het object en de invoeging doet zodat deze "bekend" is vóór de invoeging.




  1. 19.3 VOB Sluiten ORA-65107 ORA-16078

  2. Hoe u alle beperkingen van CHECK &Foreign Key voor een tabel in SQL Server inschakelt (T-SQL-voorbeelden)

  3. MySQL Left Join Subselect

  4. Mysql-verbinding open houden