У меня есть класс с отношением многие-к-одному с абстрактным классом (PosicaoContabil).
@Entity
@Table(name = "CONT_POSICAO_DIARIA")
public class PosicaoDiaria extends BaseEntity<Long> {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "SEQ_POSICAO_DIARIA", sequenceName = "SEQ_POSICAO_DIARIA",
allocationSize = 1, initialValue = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_POSICAO_DIARIA")
@Column(name = "ID_POSICAO_DIARIA")
private Long id;
@NotNull
@ManyToOne
@JoinColumn(name = "ID_POSICAO_CONTABIL", nullable = false)
private PosicaoContabil posicaoContabil;
...
И мне нужно сделать соединение с одной из реализаций этого абстрактного класса, но получить доступ к атрибутам абстрактного класса (например: "id")
Реализация абстрактного класса
@Entity
@Table(name = "CONT_POSICAO_CARTEIRA")
public class PosicaoCarteira extends PosicaoContabil {
private static final long serialVersionUID = 1L;
@NotNull
@Enumerated(EnumType.STRING)
@Column(name = "IND_TIPO_CARTEIRA", nullable = false, length = 20)
private TipoCarteira tipoCarteira;
@Enumerated(EnumType.STRING)
@Column(name = "IND_FINALIDADE", length = 30)
private TipoFinalidade tipoFinalidade;
....
Мой абстрактный класс
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class PosicaoContabil extends BaseEntity<Long> {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "SEQ_POSICAO_CARTEIRA", sequenceName = "SEQ_POSICAO_CARTEIRA", allocationSize = 1, initialValue = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_POSICAO_CARTEIRA")
@Column(name = "ID_POSICAO_CONTABIL")
private Long id;
@NotNull
@ManyToOne
@JoinColumns({ @JoinColumn(name = "COD_TITULO", referencedColumnName = "COD_TITULO", nullable = false),
@JoinColumn(name = "DAT_VENCIMENTO_TITULO", referencedColumnName = "DAT_VENCIMENTO", nullable = false) })
private TituloVencimento tituloVencimento;
....
Мой код, использующий критерии объединения:
Root<PosicaoDiaria> root = query.from(PosicaoDiaria.class);
Join<PosicaoDiaria,PosicaoCarteira>joinPosicaoDiariaPosicaoCarteira=root.join("id");
И этот код приводит к ошибке: BasicPathUsageException: Не удается присоединиться атрибуту basi c тип
Пожалуйста, предложения?