java - 用于在春季从多个表中获取数据的自定义查询
问题描述
实体:
@Entity(name = "ap_order_paid")
@Component
public class ApOrderPaid {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Long order_number;
@Transient
private Long invoiceNumber;
private Long cheqe_number;
//getter setter
}
public class Orders {
private long order_number;
private String invoice_number;
}
我在 mysql 编辑器中运行以下查询,并且正在运行
select
v.order_number,
v.id,
o.invoice_number as invoiceNumber
from ap_order_paid as v, orders o
where v.cheqe_number like '%1234%' and v.order_number = o.order_number
@Query
但是当我在带有注释的spring存储库中运行时,该注释不只提供invoice_number的数据
@Query(value="select v.*, o.invoice_number from ap_order_paid as v, orders o where v.cheqe_number like %?1% and v.order_number = o.order_number", nativeQuery = true)
List<ApOrderPaid> getOrderTaskPaidByCheqNo(String cheqe_number);
解决方案
@ManyToOne
像这样映射关联:
@Entity(name = "ap_order_paid")
public class ApOrderPaid {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "order_number")
private Orders order;
private Long cheqe_number;
//getter setter
}
@Entity
public class Orders {
@Id
private long order_number;
private String invoice_number;
}
并使用这样的 HQL/JPQL 查询:
@Query("select v from ap_order_paid as v join fetch v.order where v.cheqe_number like %?1%")
List<ApOrderPaid> getOrderTaskPaidByCheqNo(String cheqe_number);
推荐阅读
- xamarin - Xamarin Android Entity Framework Core 链接器问题
- pandas - 多次分组后选择最后一个时间值
- c++ - 坚持理解内存对齐
- shopify - Shopify 根据大量变体更改价格
- node.js - AWS CodePipeline 在部署阶段失败并出现 CloudFormation 错误
- c++ - 未从函数返回调用复制构造函数
- linux - 如何为 Raspberry Pi Zero W 交叉编译 Rust 代码
- python - 为什么 ThreadPoolExecutor 的默认 max_workers 是根据 CPU 的数量来决定的?
- ios - Swift Firebase - 如何从 GeoFire 获取单个用户的位置
- azure - 将 SQL VM 移至 CSP 订阅