Я хочу сделать запрос к моей таблице с помощью 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;
}
}