如何解决如何使用criteriaBuilder和predicates查询嵌套对象
我正在使用 spring-boot 框架做一份工作。我有三张桌子:
支付交易
订购
订单项
这些类定义了 3 个表,如下所示:
@Entity
@Table(name = "payment_transaction")
@EqualsAndHashCode(callSuper = true)
@Data
public class PaymentTransaction extends BaseEntity {
/**
*
*/
private static final long serialVersionUID = 6551819616644943167L;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id")
private Order order;
@Column(name = "amount")
private BigDecimal amount;
@Entity
@Table(name = "`order`")
@EqualsAndHashCode(callSuper = true)
@Getter
@Setter
public class Order extends BaseEntity {
/**
*
*/
public static final long serialVersionUID = 1280823802207154940L;
@Column(name = "status")
@Enumerated(value = EnumType.STRING)
public OrderStatus status;
@JsonManagedReference
@OnetoMany(mappedBy = "order")
public List<OrderItem> orderItems;
@Entity
@Table(name = "order_item")
@EqualsAndHashCode(callSuper = true)
@Getter
@Setter
public class OrderItem extends BaseEntity {
/**
*
*/
public static final long serialVersionUID = 8153719163599603427L;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "order_id")
public Order order;
@Column(name = "status")
@Enumerated(value = EnumType.STRING)
public OrderStatus status;
我需要用代码查询这些 PaymentTransation 是 OrderItem === "COMPLETED" 的属性值,通过重写方法:
public Predicate toPredicate(Root<PaymentTransaction> root,CriteriaQuery<?> query,CriteriaBuilder criteriaBuilder){};
我的问题是 OrderItem 嵌套在 Order 中,Order 嵌套在 PaymentTransaction 中,Order 包含一个 OrderItem 列表。这些查询对我来说太难了。
在被覆盖的方法中,我看到许多简单的查询,例如:
if (sellerId != null) {
Predicate preSeller = criteriaBuilder.equal(root.get("sellerId"),sellerId);
predicates.add(criteriaBuilder.and(preSeller));
}
if (buyerId != null) {
Predicate preBuyer = criteriaBuilder.equal(root.get("buyerId"),buyerId);
predicates.add(criteriaBuilder.and(preBuyer));
}
谁能帮我解决这个问题????
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。