sql >> Databasteknik >  >> RDS >> Mysql

Hibernate @Version orsakar ett misslyckande i databasens främmande nyckel

Först :

Din FK bör referera till PK för den refererade enheten. I det här fallet bör du ha person.conference_room_id som refererar till conferenceroom.id . Om du vill ha din code vara identifieringsfältet för ConferenceRoom enhet, använd då inte en surrogatnyckel. Om code kolumn är inte en PK-kandidat, då är den inte heller en FK-kandidat.

Andra :

Slå samman :

Bestå :

Jag tror att du har förvirrat merge med persist . Vad jag kan se av den medföljande koden skapar du ett nytt ConferenceRoom och inte ändra en befintlig. Därför merge kommer inte att göra vad du vill att den ska göra. Försök att ändra din (medföljande) metod till följande:

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

Dessa saker bör lösa de problem du har tagit upp.




  1. Vilken metod är bättre för att validera användaruppgifter?

  2. hur man får rätt räkning

  3. TSQL Pivot utan aggregatfunktion

  4. Ansluter till en MySQL-databas i .NET