基于嵌套对象和主体的Spring数据查询获取



我有一个Order实体,它与Customer实体有一个many-to-one关系。我想写一个Spring Data JPA查询来获取属于customer id的所有订单。

下面是我的Order实体

@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@EqualsAndHashCode(exclude = "customer")
@ToString(exclude = "customer")
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private double price;
private LocalDate date;
@ManyToOne
@JoinColumn(name="customer_id", nullable = false)
@JsonBackReference
private Customer customer;
...

Spring Data JPA


@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
@Query("select  orders from Order  where orders.customer.id = ?#{principal.id}")
Page<Order> findAll(Pageable pageable);
}

我哪里错了?我们也可以使用基于Spring Data JPA中的方法命名约定的流畅风格编写上述查询。

这个HQL查询应该可以工作:

@Query("select o from Order o inner join o.customer c where c.id = ?#{principal.id}")

基于方法名的查询似乎不支持连接操作,或者至少我找不到关键字。您可以查看文档中支持的关键字列表。

最新更新