@JoinTable с унаследованными таблицами - PullRequest
0 голосов
/ 09 октября 2018

У меня следующая проблема. сотрудник может принадлежать нескольким организациям и наоборот.Так что это отношение многих ко многим.Как видите, список организаций объединяет таблица 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'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...