JPA назвал запрос, возвращающий пустой массив, когда он не должен - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь запросить последние 5 цифр числового поля из базы данных Oracle в репозитории Springboot / JPA.

В Oracle работает следующий запрос: Select * FROM DP1_Attachments Where trim(substr(dp1_submit_date_dp1_number, -5, 5)) = [a-five-digit-number]

Я пытался реализовать следующее:

ENTITY:

@IdClass(CompositeKey.class)
public class DP1Attachments {

    @Id
    private  Integer attachmentsFolder;
    @Id
    private  Integer attachmentNumber;

    private  Integer dp1SubmitDateDp1Number;
    private  String attachmentName;
    private  Integer attachmentSize;
    private  String attachmentType;

    @JsonFormat(pattern = "MM/dd/yyyy HH:mm")
    private LocalDateTime attachmentDate;
    private  String attachmentBy;
    private  Integer attachmentByUsersId;
    private  String attachmentActive;
    private  String modifiedBy;
    private  Integer modifiedByUsersId;
    @JsonFormat(pattern = "MM/dd/yyyy HH:mm")
    private  LocalDateTime modifiedDate;

СКЛАД


    @Query("SELECT a FROM DP1Attachments a WHERE trim(substring(a.dp1SubmitDateDp1Number, -5, 5)) = :dp1Number")
    List<DP1Attachments> queryByDp1SubmitDateDp1Number(@Param("dp1Number") String dp1Number);

}

СЕРВИС

public List<DP1Attachments> getAttachmentsList (String dp1Number){
        return attachmentsRepository.queryByDp1SubmitDateDp1Number(dp1Number);
    }

CONTROLLER

    public ResponseEntity<?> getAttachmentsInFolder (@PathVariable String attachmentFolder){
        List<DP1Attachments>files = attachmentsService.getAttachmentsList(attachmentFolder);
        return new ResponseEntity<>(files, HttpStatus.OK);
    }

Запрос выполняется, но возвращает пустой массив.

Я также попытался изменить подстроку на оператор LIKE:

@Query("SELECT a FROM DP1Attachments a WHERE TO_CHAR(a.dp1SubmitDateDp1Number) like :dp1Number")
    List<DP1Attachments> queryByDp1SubmitDateDp1Number(@Param("dp1Number") String dp1Number);

И услуга изменилась на:

 public List<DP1Attachments> getAttachmentsList (String dp1Number){
        return attachmentsRepository.queryByDp1SubmitDateDp1Number("%" + dp1Number);
    }

Это также работает без ошибок, но возвращает пустой массив.

...