Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Hibernate @Version causando falha de restrição de chave estrangeira do banco de dados


Primeiro :

Seu FK deve referenciar o PK da entidade referenciada. No caso instantâneo, você deve ter person.conference_room_id que faz referência a conferenceroom.id . Se você deseja que seu code para ser o campo de identificação para o ConferenceRoom entidade, não use uma chave substituta. Se o code coluna não é um candidato PK, então também não é um candidato FK.

Segundo :

Mesclar :

Persistir :

Acho que você confundiu merge com persist . Pelo que posso dizer pelo código fornecido, você está criando um novo ConferenceRoom e não modificar um existente. Portanto, merge não vai fazer o que você quer que ele faça. Tente alterar seu método (fornecido) para o seguinte:
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); 
}

Essas coisas devem corrigir os problemas que você levantou.