Получите максимальное значение с Spring-JPA - PullRequest
0 голосов
/ 09 марта 2020

Я хочу сделать запрос к моей таблице с помощью Spring-JPA (я не могу использовать @Query) для получения максимального регистра

Запрос имеет следующие условия:

Изначально мой запрос get зарегистрируйтесь, где версия - "x", а Validated - 1, а процесс - список.

version: "1A" 
validated: 1 -> It is always 1.   
lista: ["process1","process2"] or with 3,4 process...

myRepo.findByIdVersionCierreAndAndValidatedAndIdProcessIn(version, 1, lista);

Но в моей базе данных я могу быть двумя регистрами:

1º

version: "1A" 
validated: 1 
lista: ["process1","process2"]
Exec: 1

2º

version: "1A" 
validated: 0 
lista: ["process1","process2"]
Exec: 2

Мне нужно получить зарегистрируйтесь с максимальным значением Exe c, потому что в моем регистре 1º, подтверждено 1, НО в моем регистре 2, подтверждено 0 лет с моим старым кодом, я получаю регистр Exec1 - "myRepo.findByIdVersionCierreAndAndValidatedAndIdProcessIn(version, 1, lista);"

Сначала я увидел сообщение: Spring CRUD-репозиторий: есть ли findOneByMaxXYZColumn ()?

Поэтому я изменил свой код:

 myRepo.findFirstfindByIdVersionCierreAndAndValidatedOrderbyIdExecDescAndIdProcessIn(version, 1, lista);

Ошибка:

Caused by: java.lang.IllegalArgumentException: Failed to create query method public abstract java.util.List es.repository.DataValidationRepository.findFirstfindByIdVersionCierreAndAndValidatedOrderbyIdExecDescAndIdProcessIn(java.lang.String,int,java.util.List)! No property orderbyIdExecDesc found for type int! Traversed path: TpValidaAuto.validated.

И

 myRepo.findFirstfindByIdVersionCierreAndAndValidatedAndIdProcessInOrderbyIdExecDesc(version, 1, lista);

Однако при запуске SpringBoot появляется ошибка:

   Caused by: org.springframework.data.mapping.PropertyReferenceException: No property inOrderbyIdExecDesc found for type String! Traversed path: TpValidaAuto.idProcess.

РЕДАКТИРОВАТЬ:

@Repository
public interface DataValidationRepository extends CrudRepository<TpValidaAuto, String> {
    List<TpValidaAuto> findByIdVersionCierreAndAndValidatedAndIdProcessIn(String version, int validated, List<String> process);
}

Entity :

@Entity
@Table(name = "MyTable")
@GETTER
@SETTER
public class TpValidaAuto {

    @Id
    @NotNull
    @Column(name = "ID")
    @JsonProperty("id")
    private String id;

    @NotNull
    @Column(name = "ID_FICHERO")
    @JsonProperty("file")
    private String idFile;

    @NotNull
    @Column(name = "ID_EJECUCION")
    @JsonProperty("exec")
    private int idExec;

    @NotNull
    @Column(name = "ID_PROCESO")
    @JsonProperty("process")
    private String idProcess;

    @Column(name = "ID_PERIODO")
    @JsonProperty("period")
    private String idPeriod;

    @Column(name = "FC_ULT_DATO")
    @JsonProperty("lastdatedata")
    private String lastDateData;

    @Column(name = "IND_INCLUIR_CIERRE")
    @JsonProperty("validated")
    @JsonFormat(shape = JsonFormat.Shape.BOOLEAN)
    private int validated;

    @Column(name = "ID_VERSION_CIERRE")
    @JsonProperty("lastdateclose")
    private String idVersionCierre;

    @NotNull
    @Column(name = "IND_DATOS_MODIF")
    @JsonProperty("modificated")
    private int modificated;

    @NotNull
    @Column(name = "FC_ALTA")
    @JsonProperty("createDate")
    private String createDate;

    @NotNull
    @Column(name = "USR_ALTA")
    @JsonProperty("createUser")
    private String createUser;

    @NotNull
    @Column(name = "FC_MODIFICACION")
    @JsonProperty("modificationDate")
    private String modificationDate;

    @NotNull
    @Column(name = "USR_MODIFICACION")
    @JsonProperty("modificationUser")
    private String modificationUser;

@JsonGetter("validated")
public boolean validated() {
    boolean result = true;

    if (this.validated == 0) {
        result = false;
    }

    return result;
}

@JsonSetter("validated")
public void validated(boolean validated) {
    if (validated) {
        this.validated = 1;
    } else {
        this.validated = 0;
    }
}
...