Spring JpaRepository находит сущности из атрибута с использованием нетрадиционных имен - PullRequest
0 голосов
/ 08 февраля 2019

Следующее использовалось в Spring 1.5.10.RELEASE, но не работает в Spring 2.0.7.RELEASE, и я не знаю почему:

Entity

@Entity
@Table(name = "locations")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Location {
  // ... unimportant stuff
  @Column(name = "c_locations_id")
  private String cLocationId;
  // ... more unimportant stuff
}

Репозиторий (он же "Проблема")

@Repository
public interface LocationRepository extends JpaRepository<Location, Long>, JpaSpecificationExecutor<Location> {
  Location findByCLocationId(String cLocationId);
  List<Location> findAllByOrderByCLocationIdAsc();
}

Ошибка, которую я получаю в Spring 2.0.7.RELEASE для приведенного выше кода:

java.lang.IllegalArgumentException: невозможно найти атрибут с заданным именем [CLocationId] в этом ManagedType.

Я не могу изменить имя атрибута из-за другогообстоятельства, поэтому я пробовал разные варианты методов в хранилище:

  • findBycLocationId - не найдено свойство orderBycLocationIdAsc для типа Location!
  • findByClocationId - нет свойства clocationIdнайдено для типа Location!Вы имели в виду «CLocationId», «cLocationId»?
  • findByCLocationId - Невозможно найти атрибут с заданным именем [CLocationId] в этом ManagedType

Чего он хочет ?!Я просто хочу обновить фреймворк ... ?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вы можете использовать имя метода следующим образом:

Location findByC_Location_Id(String cLocationId);

это может быть полезно со ссылками

0 голосов
/ 08 февраля 2019

Вы можете использовать @Query аннотацию в своих методах официальная документация .

@Query("select l from Location l where l.cLocationId = ?1")
Location findByCLocationId(String cLocationId);

@Query("select l from Location l")
List<Location> findAllByOrderByCLocationIdAsc();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...