0
我遇到了使用按功能排序的JPA(提供程序:EclipseLink)的奇怪行爲。我有TransactionData類,它有參考CustomerData類:使用Criteria API進行嵌套字段排序時缺少行
@Entity
public class TransactionData {
//...
@ManyToOne
@JoinColumn(name = "CUSTOMER_ID")
private CustomerData customer;
//...
}
@Entity
public class CustomerData {
//...
@Column(name = "LAST_NAME")
private String lastName;
//...
}
在我的項目,有一些特定的情況下,如果有交易,這是不分配給任何客戶(稱爲非客戶交易)。
我嘗試獲取所有註冊交易(客戶交易和非客戶交易)的列表,並按客戶的姓氏對其進行分類。要達致這我已經寫了以下標準阿比
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<TransactionData> criteriaQuery = criteriaBuilder.createQuery(TransactionData.class);
Root<TransactionData> from = criteriaQuery.from(TransactionData.class);
criteriaQuery.orderBy(criteriaBuilder.asc(from.get("customer").get("lastName"));
TypedQuery<TransactionData> query = entityManager.createQuery(criteriaQuery);
return query.getResultList();
我想我應該得到的所有交易的列表,當然,這些,在客戶字段設置爲NULL值。但JPA的行爲是不同的,因爲它刪除了所有對客戶的引用爲空的事務。
類型的品牌意識。 –