【发布时间】:2020-05-13 11:21:33
【问题描述】:
下面是我的视图实体vw_invoice_report
@Entity
@Table(name = "vw_invoice_report")
class Report implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id")
private Long id;
@Column(name = "sender_name")
private String sender;
@Column(name = "client_name")
private String client;
@Column(name = "submit_date")
@Temporal(TemporalType.TIMESTAMP)
private Date submitDate;
@Column(name = "invoice_num")
private String invoiceNum;
//getters
}
我正在尝试实现findByClientAndLawfirmAndSubmitDateBetween 以使用client,sender, submitDate 字段查询视图
public interface ReportRepository extends PagingAndSortingRepository<Report, Long>{
public List<Report> findByClientAndLawfirmAndSubmitDateBetween(String client, String sender, Date start, Date stop, Pageable pageable)
}
当我尝试调用上述方法时,出现以下错误
org.hibernate.QueryException: could not resolve property: client of: com.xyz.reports.Report
[select generatedAlias0 from com.xyz.reports.Report as generatedAlias0 where ( ( generatedAlias0.client=:param0 ) and ( generatedAlias0.sender=:param1 ) ) and ( generatedAlias0.submitDate between :param2 and :param3 )]; nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: client of: com.xyz.reports.Report [select generatedAlias0 from com.xyz.reports.Report as generatedAlias0 where ( ( generatedAlias0.client=:param0 ) and ( generatedAlias0.sender=:param1 ) ) and ( generatedAlias0.submitDate between :param2 and :param3 )] 34178348919273527
但是,如果我用Query 注释将上面的查询注释为下面的工作正常
@Query(value="SELECT id, sender_name, client_name, submit_date, invoice_num FROM vw_invoice_report WHERE client_name = ?1 AND sender_name = ?2 AND submit_date BETWEEN ?3 AND ?4 ORDER BY submit_date desc",
nativeQuery = true)`
有没有办法让findByClientAndLawfirmAndSubmitDateBetween() 在没有@Query 的情况下工作
【问题讨论】:
-
您的实体中的
Lawfirm在哪里?? -
我的错,重构很糟糕,
lawfirm是Report实体中的sender字段 -
是不是导致异常???你解决了吗???
-
@RanPaul 您的
PagingAndSortingRepository的标识符类型是Integer,而@Id属性是Long。你能检查一下这是否会导致问题吗? -
@Daniel 我把它改成了
Long仍然面临这个问题
标签: java spring spring-boot spring-data-jpa spring-data-rest