为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Spring Boot 中使存储库 findBy() 具有多个字段?

如何在 Spring Boot 中使存储库 findBy() 具有多个字段?

白衣非少年 2023-05-10 13:47:36
我想在 Spring Boot java 应用程序中创建 restcontroller findbyProductIdandYear,但出现错误,如何以很好的方式实现它?这是我的模型:   @Entity   @Table(name="view_disbursement_by_project")   public class ViewDisbursement {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name="id")private int id;@Column(name="project_id")private String projectId;@Column(name="stage")private String stage;@Column(name="no")private Integer no;@Column(name="months")private Integer months;@Column(name="years")private Integer years;@Column(name="count")private Integer count;public int getId() {    return id;}public void setId(int id) {    this.id = id;}public String getProject_id() {    return projectId;}public void setProject_id(String project_id) {    this.projectId = project_id;}public String getStage() {    return stage;}public void setStage(String stage) {    this.stage = stage;}public Integer getNo() {    return no;}public void setNo(Integer no) {    this.no = no;}public String getProjectId() {    return projectId;}public void setProjectId(String projectId) {    this.projectId = projectId;}public Integer getMonths() {    return months;}public void setMonths(Integer months) {    this.months = months;}public Integer getYears() {    return years;}public void setYears(Integer years) {    this.years = years;}public Integer getCount() {    return count;}public void setCount(Integer count) {    this.count = count;}    }这是我的存储库:    @Repository    public interface ViewDisbursementRepository extends     JpaRepository<ViewDisbursement, Integer> {List<ViewDisbursement> findByProjectIdandYear(String projectId,     Integer years);    }
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您的字段名称是:

@Column(name="years")
private Integer years;

你有同样的适当的吸气剂和吸气剂。

并且您在存储库中使用查询方法为:

List<ViewDisbursement> findByProjectIdandYear(String projectId, Integer years);

findByProjectIdAndYears最后应该是一个's'。然后只有它会匹配字段名称。还有'and'而不是'And'。


查看完整回答
反对 回复 2023-05-10
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

使用

findByProductIdAndYears(String projectId, Integer years)
  • 当对多个参数使用 findBy 时,应该使用 And 来完成,我们必须保留 A 而不是 a。

  • 我们必须使用实体中定义的名称(因为这里我们有 Year,应该是 Years)

例如

@Entity

private String productId;


findById(String id) //wiil not work

findByProductId(String id) //work

 @Repository

    public interface ViewDisbursementRepository extends JpaRepository<ViewDisbursement, Integer> {


    List<ViewDisbursement> findByProjectIdAndYears(String projectId, Integer years);


    }

除了和/或


带有谓词 IsStartingWith、StartingWith、StartsWith、IsEndingWith"、EndingWith、EndsWith、IsNotContaining、NotContaining、NotContains、IsContaining、Containing、包含这些查询的相应参数的派生查询将被清理。


查看完整回答
反对 回复 2023-05-10
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信