[英]Custom Query for fetching data from multiple tables in spring
Entities:实体:
@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;
}
I am running following query in mysql editor and that is working我在 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
but when I run in spring repository with @Query
annotation that is not giving data for invoice_number only但是当我在@Query
存储库中运行时,@Query 注释不只提供 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);
You have not mentioned any kind of @column annotation on any column.您没有在任何列上提到任何类型的 @column 注释。 You are trying to get "invoiceNumber" which is a "transient" field.您正在尝试获取“invoiceNumber”,这是一个“瞬态”字段。 Use proper annotation so that hibernate able to map DB columns with entity object.使用正确的注释,以便 hibernate 能够 map 具有实体 object 的 DB 列。
Map the association as a @ManyToOne
like this: Map 关联为@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;
}
and use a HQL/JPQL query like this:并使用这样的 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.