Разрешить свойство вложенного объекта в findBy - PullRequest
0 голосов
/ 28 октября 2019

У меня есть объект Items, который имеет отношение ManyToOne к полю другого объекта ExceptionType. Я хочу вернуть список товаров на основе номера банка (из сущности Items) и itemExceptionType (из сущности ExceptionType). Я использую Gradle.

Я получаю эту ошибку: не найдено свойство exceptionType для типа Items! База данных - DB2 на мэйнфрейме.

Я могу искать только по номеру банка, и это возвращает список элементов. Когда я пытаюсь добавить тип исключения в запрос, возвращается пустой список - даже если ВСЕ элементы имеют тип исключения.

Кажется, проблема заключается в разрешении объекта ExceptionType для элементов. Я упростил запрос, чтобы найти только номер исключения, но я все еще получаю сообщение об ошибке. Я пробовал различные комбинации, используя _ в findBy, но безуспешно (например, findBy_ExceptionTypeExceptionNumber, findByExceptionType_ExceptionNumber и т. Д.). Все они возвращают одну и ту же ошибку.

Когда я использую _ExceptionType, я точно получаю: не найдено свойство _ExceptionType для типа Items!
Так что с _ или без _ он не может разрешить вложенный объект / свойство

@Entity
@Data
public class Items {

  @Id
  private String itemKey;

  private String bankNbr;

  private BigDecimal itemAmount;

  private String itemPosPayInd;

  @ManyToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "ITEM_EXCEPTION_TYPE", insertable = false, updatable = false)
  private ExceptionType itemExceptionType;


@Entity
@Data
public class ExceptionType {

private String exceptionTypeValue;

@Id
private String exceptionNumber;


public class AdHocController {
@Autowired
AdHocService adHocService;


@GetMapping(value = "/adhoc-bank-exception/")
@ResponseBody
public ResponseEntity<List<Items>> getAdHocItemsByBankException(@RequestParam String bankNbr, @RequestParam (required = false) ExceptionType itemExceptionType) {

    List<Items> itemsList = adHocService.getAdHocItemsByBankException(bankNbr, itemExceptionType);
    log.debug("Getting getAdHocItemsByBankException");
    return new ResponseEntity<>(itemsList, HttpStatus.OK);
}


@Service
public class AdHocService {

@Autowired
private AdHocRepository adHocRepository;


public List<Items> getAdHocItemsByBankException(String bankNbr, ExceptionType itemExceptionType) {
    return adHocRepository.findBy_ExceptionTypeExceptionNumber(itemExceptionType);

}

@Repository
public interface AdHocRepository extends CrudRepository<Items, Long> {


List<Items> findBy_ExceptionTypeExceptionNumber(ExceptionType exceptionNumber);

Мне нужно, чтобы он возвратил список Предметов, которые все содержат предоставленный номер исключения. Однако я получаю ошибку ссылки на свойство.

1 Ответ

1 голос
/ 28 октября 2019

Насколько я могу судить, вы используете Spring Data. Я предлагаю следующее:

пусть ваш интерфейс AdHocRepository расширится с JpaRepository и поменяйте подпись вашего пользовательского метода репо на следующую.

@Repository
public interface AdHocRepository extends JpaRepository<Items, Long> {

    List<Items> findByItemExceptionTypeExceptionNumber(String exceptionTypeNumber);
}

Обратите внимание на наименование пользовательского метода репо:

findBy<NameOfEntityProperty><NameOfNestedEntityProperty>(...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...