sql >> Databáze >  >> RDS >> Mysql

Hibernate @Version způsobuje selhání omezení cizího klíče databáze

První :

Váš FK by měl odkazovat na PK odkazované entity. V tomto případě byste měli mít person.conference_room_id který odkazuje na conferenceroom.id . Pokud chcete svůj code být identifikačním polem pro ConferenceRoom entity, pak nepoužívejte náhradní klíč. Pokud code sloupec není kandidátem PK, pak také není kandidátem FK.

Za druhé :

Sloučit :

Přetrvávat :

Myslím, že jste si popletli merge s persist . Z toho, co mohu říci podle poskytnutého kódu, vytváříte novou ConferenceRoom a neupravovat stávající. Proto merge nebude dělat to, co chcete, aby dělal. Zkuste změnit svou (poskytovanou) metodu na následující:

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

Tyto věci by měly vyřešit problémy, na které jste upozornili.




  1. Získejte n seskupených kategorií a shrňte ostatní do jedné

  2. Vlastní objednávka v Oracle SQL

  3. Jak odečíst jednu od měsíce formátu data v mysql?

  4. Najděte MAX SUM v MySQL