我有一个名为CustomerOrderEntity的实体和一个名为CustomerOrder的Dto类,如下所示。
@Entity
public class CustomerOrderEntity implements Serializable {
@Id
private String id;
private String customerId1;
private String customerId2;
.......
}
@AllArgsConstructor
@Getter
public class CustomerOrder {
private String customerId1;
private String customerId2;
}
在数据库表中,我需要选择唯一的customerId1和它的customerId2。数据库如下所示。
我需要执行的本地查询是
select distinct customerId1, customerId2 from ....
要在JPA中实现这一目标,我拥有以下JPA存储库,
@Repository
public interface CustomerOrderRepository extends JpaRepository<CustomerOrderEntity, String> {
Page<OrderCustomer> findDistinctByCustomerId1StartingWithOrderByCustomerId1(String customerId1, Pageable pageable);
}
执行此操作时,我发现在页面请求中执行的计数查询正在对id进行计数,而不是对不同的customerId1,cutomerId2进行计数。
查询是
select count(distinct o) from CustomerOrderEntity........
此查询获取与给定值匹配的所有customerId1的计数,不同的customerId1,customerId2除外
因此,我添加了以下JPA查询,
@Query(
value = "select distinct new OrderCustomer(m.customerId1, m.customerId2) from CustomerOrderEntity m where m.customerId1 like :customerId1% order by m.customerId1"
)
我的问题是