У меня есть система, использующая мультитенантность с дискриминатором 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?
Спасибо за ваши ответы.