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的行为是不同的,因为它删除了所有对客户的引用为空的事务。
类型的品牌意识。 –