Mysql
 sql >> база данни >  >> RDS >> Mysql

Хибернация @Version причинява неизправност на ограничението на външния ключ на базата данни

Първо :

Вашият FK трябва да се позовава на PK на посочения обект. В настоящия случай трябва да имате person.conference_room_id който препраща conferenceroom.id . Ако искате вашия code да бъде идентификационното поле за ConferenceRoom обект, тогава не използвайте сурогатен ключ. Ако code колоната не е кандидат за PK, значи също не е кандидат за FK.

Втори :

Обединяване :

Постоянство :

Мисля, че сте объркали merge с persist . От това, което мога да разбера от предоставения код, вие създавате нова ConferenceRoom и без промяна на съществуващ. Следователно, merge няма да направи това, което искаш да направи. Опитайте да промените своя (предоставен) метод на следния:

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); 
}

Тези неща трябва да решат проблемите, които повдигнахте.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените директорията на базата данни mysql на WAMP

  2. Въпрос за най-добра практика за MySQL:подреждане по идентификатор или дата?

  3. PHP и MySql проверяват дали таблицата е празна

  4. Как работи спирането на транзакциите в MySQL?

  5. как да направите разделяне на колона на sql таблица