微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于在spring中从多个表中获取数据的自定义查询

如何解决用于在spring中从多个表中获取数据的自定义查询

实体:

@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 存储库中运行时,该注释仅提供发票编号的数据

@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);

解决方法

您没有在任何列上提及任何类型的 @column 注释。您正在尝试获取“invoiceNumber”,这是一个“瞬态”字段。使用适当的注解,以便 hibernate 能够将 DB 列与实体对象进行映射。

,

将关联映射为 @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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。