问题描述
我正在使用 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 (将#修改为@)