EclipseLink 2.7.3 выбрасывает исключение, как и ошибка 493235 - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть система, использующая мультитенантность с дискриминатором Schema, использующая EclipseLink 2.7.3. Я перешел на EclipseLink 2.7.3 именно для того, чтобы избежать этих ( Bug 493235 ) (и других) ошибок. Однако я получаю следующее исключение:

java.lang.IllegalArgumentException: Exception [EclipseLink-6069] (Eclipse Persistence Services - 2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.QueryException
Exception Description: The field [`database_1`.library.libId] in this expression has an invalid table in this context.
Query: ReadAllQuery(name="Library.findByReservationId" referenceClass=Library jpql="SELECT l FROM Library l WHERE l.libId = (SELECT r.lib.libId FROM Reservation r WHERE r.reservId = :reservId)")

Мои сущности выглядят так:

@Entity
@Multitenant(value = TABLE_PER_TENANT)
@TenantTableDiscriminator(type = SCHEMA, contextProperty = MULTITENANT_PROPERTY_DEFAULT)
@Table(name = "library")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Library.findByReservId", query = "SELECT l FROM Library l WHERE l.libId = (SELECT r.lib.libId FROM Reservation r WHERE r.reservId = :reservId)")})
public class Library implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "libId")
    private Long libId;
    ...
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "libId")
    private List<Reservation> reservList;
    ...
}

@Entity
@Multitenant(value = TABLE_PER_TENANT)
@TenantTableDiscriminator(type = SCHEMA, contextProperty = MULTITENANT_PROPERTY_DEFAULT)
@Table(name = "reservation")
@XmlRootElement
public class Reservation implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "reservId")
    private Long reservId;
    @JoinColumn(name = "lib", referencedColumnName = "libId")
    @ManyToOne(optional = false)
    private Library lib;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "reservation")
    private List<BookReservation> bookReservationList;
    @Transient
    private List<Long> bookIdList;
    ...
}

Предполагается, что эта ошибка исчезла с версии 2.7. Я ошибся? Может ли здесь быть что-то еще? Эта ошибка часто встречается и в EclipseLink 2.7.3? Спасибо за ваши ответы.

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