sql >> Database >  >> RDS >> Mysql

Slaapstand @Version waardoor de beperking van de externe sleutel van de database mislukt

Eerste :

Uw FK moet verwijzen naar de PK van de entiteit waarnaar wordt verwezen. In dit geval zou u person.conference_room_id . moeten hebben die verwijst naar conferenceroom.id . Als je je code . wilt om het identificatieveld te zijn voor de ConferenceRoom entiteit, gebruik dan geen surrogaatsleutel. Als de code column geen PK-kandidaat is, dan is het ook geen FK-kandidaat.

Tweede :

Samenvoegen :

Volhouden :

Ik denk dat je merge hebt verward met persist . Van wat ik kan zien aan de hand van de verstrekte code, maakt u een nieuwe ConferenceRoom en niet een bestaande wijzigen. Daarom merge gaat niet doen wat je wilt dat het doet. Probeer uw (meegeleverde) methode als volgt te wijzigen:

public ConferenceRoom getNewConferenceRoom(Person p) {
    ConferenceRoom r = new ConferenceRoom();
    r.setCode("MyUniqueGeneratedCode");
    r.getPeople().add(p);
    // sessionFactory is spring injected member
    sessionFactory.getCurrentSession().persist(r); 
}

Deze dingen zouden de problemen moeten oplossen die u aan de orde heeft gesteld.




  1. Verschil tussen SELECT INTO en INSERT INTO in MySQL

  2. migreren naar mysql in django

  3. 6 functies om de dag, maand en jaar van een datum in SQL Server te krijgen

  4. PDO - lastInsertId() voor invoegquery met meerdere rijen