У меня следующая проблема. сотрудник может принадлежать нескольким организациям и наоборот.Так что это отношение многих ко многим.Как видите, список организаций объединяет таблица OrganizationMember .Проблема заключается в том, что OrganizationMember наследуется от Member , который содержит employee_id и organization_id в OrganizationMember .Hibernate генерирует SQL-запрос, который пытается получить employee_id из OrganizationMember , а не Member , что приводит к ошибке.
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
//...
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(
name = "OrganizationMember",
joinColumns = @JoinColumn(name = "employee_id",
referencedColumnName = "id", table = "Member"),
inverseJoinColumns = @JoinColumn(name = "organization_id",
referencedColumnName = "id", table ="OrganizationMember")
)
@Fetch(value = FetchMode.SUBSELECT)
private List<Organization> organizationMemberList;
}
@Entity
@Table(name = "OrganizationMember")
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
@DiscriminatorValue("ORGANIZATION_MEMBER")
public class OrganizationMember extends Member {
//...
}
@Entity
@Table(name = "Member")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Member implements Serializable {
//...
}
Ошибка: Причина: org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet Причина: com.microsoft.sqlserver.jdbc.SQLServerException: Неверное имя столбца 'employee_id'.