Для index() требуется QueryKeyExpression с CollectionMapping, который имеет ненулевой столбец порядка списка
У меня есть две сущности: одна сохраняет основные данные, связанные с делом, а другая сохраняет все обновления для определенного случая.
@Entity(name = "Case")
@EntityListeners(AuditingEntityListener.class)
@NamedQueries({
public class Case extends AbstractAuditableEntity implements Serializable {
@Column(nullable = false)
private Long referenceId;
@ManyToOne(optional = false)
private Incident Incident;
@OneToMany(targetEntity = CaseUpdate.class, orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "case")
@JoinColumn(name="case", nullable = false)
@OrderBy("created desc")
private List<CaseUpdate> caseUpdates = new ArrayList<CaseUpdate>();
Другой класс с отношением ManyToOne выглядит следующим образом
@Entity(name = "CaseUpdate")
@EntityListeners(AuditingEntityListener.class)
public class CaseUpdate extends AbstractAuditableEntity implements Serializable {
public CaseUpdate() {
}
@Id
@GeneratedValue
private Long id;
@Column
private String status;
@Column(nullable = false)
private String type;
@Column(columnDefinition = "TEXT")
private String description;
@Column(name = "created",nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date created;
@Column
@Temporal(TemporalType.DATE)
private Date restoreDate;
@Column
@Temporal(TemporalType.DATE)
private Date responseDate;
@Column
@Temporal(TemporalType.DATE)
private Date commitmentDate;
@JoinColumn(name="caseUpdates")
@ManyToOne(optional = false)
private Case case;
Я пытаюсь найти таблицы Case и CaseUpdate, используя BooleanExpression для построения запросов. Когда он пытается найти, я получаю исключение
Вызывается: org.eclipse.persistence.exceptions.QueryException: Exception Description: index() требует выражения QueryKeyExpression с CollectionMapping, которое имеет ненулевой столбец порядка списка. [org.eclipse.persistence.mappings.OneToManyMapping[caseUpdates]] in не соответствует этому условию в [ Query Key caseUpdates Base au.net.iinet.fms.data.entities.Case] Запрос: ReportQuery(referenceClass=Case jpql=)
"select count(case) from Case case left join case.caseUpdates as case_caseUpdates_0 where index(case_caseUpdates_0) = ?1 and case.faultIncident.faultDomain = ?2 and case_caseUpdates_0.status = ?3")
Следующий код используется для создания критериев поиска
BooleanExpression overallCriteria = null;
if (params.getStatus() != null && !params.getStatus().isEmpty()) {
overallCriteria = QCase.case.caseUpdates.get(0).status.eq(params.getStatus());
}
Класс QCase генерируется с использованием Querydsl. Я не уверен, что означает это исключение и как это исправить, какие-либо идеи?