Я использовал 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 , но тоже безуспешно.