从 java 的列表中获取一行而不是 3 行?

Getting one single row from list in java instead of 3 rows?

我遇到一个问题,我有一个简单的 API,我在其中获取数据,在我的数据库中,我有 3 行指示 rateType。因此,当我使用 localhost:8080/myapp/salaries/1234 执行 GET 请求时,使用下面的代码我得到了我的行,但它只给了我数据库的第一行。

@Entity
@Setter

public class Salary {

    @Id
    @Column(name = "JOB_CLASS_CD")
    @JsonSerialize
    private String jobClassCd;

    @Column(name = "JOB_CLASS_TITLE")
    @JsonSerialize
    private String jobClassTitle;

    @Column(name = "RATE_TYPE")
    @JsonSerialize
    private String rateType;

    @Column(name = "STEP_1")
    @JsonSerialize
    private String step1;

    @Column(name = "STEP_2")
    @JsonSerialize
    private String step2;

    @Column(name = "STEP_3")
    @JsonSerialize
    private String step3;

    @Column(name = "STEP_4")
    @JsonSerialize
    private String step4;

    @Column(name = "STEP_5")
    @JsonSerialize
    private String step5;

}

JsonResults:

   [
{

    "jobClassCd": "1234",
     "jobClassTitle": "ADMIN",
      "rateType": "Annual",
    "step1": "  55.00",
    "step2": "  55.00",
    "step3": "  55.00",
    "step4": "  55.00",
    "step5": "  55.00"


},
{
   "jobClassCd": "1234",
     "jobClassTitle": "ADMIN",
      "rateType": "Annual",
    "step1": "  55.00",
    "step2": "  55.00",
    "step3": "  55.00",
    "step4": "  55.00",
    "step5": "  55.00"
},
{
   "jobClassCd": "1234",
     "jobClassTitle": "ADMIN",
      "rateType": "Annual",
    "step1": "  55.00",
    "step2": "  55.00",
    "step3": "  55.00",
    "step4": "  55.00",
    "step5": "  55.00"
}

]

为了求和,在 spring 数据中,您可以使用 findBy 加上可以作为您的条件的字段,当然您可以有多个条件,例如:findByField1AndField2 等。 您可以了解更多 here

例如,您可以这样做:

    @Repository // you can remove the annotation
    public interface SalaryRepository extends CrudRepository<Salary, String> {

        List<Salary> findByJobClassCd(String jobClassCd);

        List<Salary> findByRateType(String rateType);

    } 

PS:然后在业务层可以把list转成stream或者else

jobClassCd 的实体映射引用了一个@Id,它将'mute' 具有相同值的其他记录。要么将 'rateType' 包含到复合 Id 中,要么有一个(单独的列)基于 @Id

排序