Ошибка после обновления гибернации: внешний ключ должен иметь то же количество столбцов, что и указанный первичный ключ - PullRequest
0 голосов
/ 14 января 2019

Я использовал Hibernate 3.6.10, и приложение работало нормально.

После обновления до 5.0.12 я получаю сообщение об ошибке гибернации:

Вызывается: org.hibernate.MappingException: Внешний ключ (FK2uf0a53lp195dovvsyp2mpdc: OcorrenciaPlantonistaPlantao [plantonistaPlantao_id])) должен иметь такое же количество столбцов, что и первичный ключ, на который указывает ссылка

Участвуют четыре класса:

Plantonista.java

public class Plantonista
{
    @Id
    private Integer matricula;

    @ManyToMany(targetEntity = Plantao.class, fetch = FetchType.LAZY)
    @JoinTable(name = "plantonistaPlantao")
    @JoinColumns({ @JoinColumn(name = "plantonista_id", referencedColumnName = "id"),
       @JoinColumn(name = "plantao_id", referencedColumnName = "id") })
    private Set<Plantao>  plantao;
}

Plantao.java

public class Plantao
{        
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    @ManyToMany(targetEntity = Plantonista.class, fetch = FetchType.LAZY)
    @JoinTable(name = "plantonistaPlantao")
    @JoinColumns({ @JoinColumn(name = "plantao_id", referencedColumnName = "id"), 
       @JoinColumn(name = "plantonista_id", referencedColumnName = "id") })
    private Set<Plantonista> plantonista;    
}

Класс релашинга PlantonistaPlantao.java

public class PlantonistaPlantao 
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY)    
    private Plantonista plantonista;

    @ManyToOne(fetch = FetchType.LAZY)
    private Plantao plantao;
}

И OcorrenciaPlantonistaPlantao.java

public class OcorrenciaPlantonistaPlantao
{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY)
    private Ocorrencia ocorrencia;

    @ManyToOne(fetch = FetchType.LAZY)
    private PlantonistaPlantao plantonistaPlantao;
}

Я пытался удалить referencedColumnName = "id" , но безуспешно.

Я также добавил @ Id в PlantonistaPlantao.plantao и в PlantonistaPlantao.plantonista , но тоже безуспешно.

...