Веб-дані JPA - виняток "Не знайдено властивості для типу"


126

Ну, я шукав Google і знайшов багато результатів, але жоден з них не зміг відповісти на мою проблему. Отже, ось це йде.

Я намагаюся вивчити Spring MVC та Spring Data JPA, роблячи мінімальну реалізацію клону pinterest. Отже, нижче наведені частини коду, які, на мою думку, мають відношення до моєї проблеми.

Моделі / сутності

@Entity
@Table(name = "pin_item")
public class PinItem implements Serializable {
    // properties ...
    @JoinColumn(name = "board_id", referencedColumnName = "user_board_id")
    @ManyToOne(optional = false)
    private UserBoard board;

    // getters and setters...
}

@Entity
@Table(name = "user_board")
public class UserBoard implements Serializable {
    // properties ...
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "board")
    private List<PinItem> pinItemList;

    // getters and setters...
}

Сервіс

@Service
@Transactional(readOnly = true)
public class BoardServiceImpl implements BoardService {
    @Autowired
    private UserBoardRepository boardRepository;

    @Override
    public List<UserBoard> findLatestBoards() {
        PageRequest request = new PageRequest(
                     0, PresentationUtil.PAGE_SIZE, 
                     Sort.Direction.DESC, "boardId"
        );
        return boardRepository.findAll(request).getContent();
    }

    // Other Methods
}

Сховище

public interface UserBoardRepository extends JpaRepository<UserBoard, Integer> {

}

Тепер, коли я називаю findLatestBoardsметод у BoardService, виключення "Немає властивості знайдено" викидається на рядок return boardRepository.findAll(request).getContent();. Ось уривок із журналу tomcat.

ЛОГ ДЕБУГ

12:28:44,254 DEBUG AnnotationTransactionAttributeSource:106 - Adding transactional method 'findLatestBoards' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
12:28:44,254 DEBUG DefaultListableBeanFactory:246 - Returning cached instance of singleton bean 'transactionManager'
12:28:44,254 DEBUG JpaTransactionManager:366 - Creating new transaction with name [com.tecnooc.picpin.service.impl.BoardServiceImpl.findLatestBoards]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
12:28:44,254 DEBUG JpaTransactionManager:369 - Opened new EntityManager [org.hibernate.ejb.EntityManagerImpl@75284194] for JPA transaction
12:28:44,255 DEBUG AbstractTransactionImpl:158 - begin
12:28:44,255 DEBUG LogicalConnectionImpl:212 - Obtaining JDBC connection
12:28:44,255 DEBUG DriverManagerDataSource:162 - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/pic_pin]
12:28:44,266 DEBUG LogicalConnectionImpl:218 - Obtained JDBC connection
12:28:44,267 DEBUG JdbcTransaction:69 - initial autocommit status: true
12:28:44,267 DEBUG JdbcTransaction:71 - disabling autocommit
12:28:44,267 DEBUG JpaTransactionManager:401 - Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@370da60e]
12:28:44,274 DEBUG TransactionalRepositoryProxyPostProcessor$CustomAnnotationTransactionAttributeSource:286 - Adding transactional method 'findAll' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
12:28:44,274 DEBUG DefaultListableBeanFactory:246 - Returning cached instance of singleton bean 'transactionManager'
12:28:44,274 DEBUG JpaTransactionManager:332 - Found thread-bound EntityManager [org.hibernate.ejb.EntityManagerImpl@75284194] for JPA transaction
12:28:44,274 DEBUG JpaTransactionManager:471 - Participating in existing transaction
12:28:44,279 DEBUG CachedIntrospectionResults:159 - Not strongly caching class [java.io.Serializable] because it is not cache-safe
12:28:44,281 DEBUG JpaTransactionManager:851 - Participating transaction failed - marking existing transaction as rollback-only
12:28:44,281 DEBUG JpaTransactionManager:559 - Setting JPA transaction on EntityManager [org.hibernate.ejb.EntityManagerImpl@75284194] rollback-only
12:28:44,283 DEBUG JpaTransactionManager:844 - Initiating transaction rollback
12:28:44,284 DEBUG JpaTransactionManager:534 - Rolling back JPA transaction on EntityManager [org.hibernate.ejb.EntityManagerImpl@75284194]
12:28:44,284 DEBUG AbstractTransactionImpl:203 - rolling back
12:28:44,284 DEBUG JdbcTransaction:164 - rolled JDBC Connection
12:28:44,285 DEBUG JdbcTransaction:126 - re-enabling autocommit
12:28:44,285 DEBUG JpaTransactionManager:594 - Closing JPA EntityManager [org.hibernate.ejb.EntityManagerImpl@75284194] after transaction
12:28:44,285 DEBUG EntityManagerFactoryUtils:338 - Closing JPA EntityManager
12:28:44,286 DEBUG LogicalConnectionImpl:232 - Releasing JDBC connection
12:28:44,286 DEBUG LogicalConnectionImpl:250 - Released JDBC connection
12:28:44,287 DEBUG ExceptionHandlerExceptionResolver:132 - Resolving exception from handler [public java.lang.String com.tecnooc.picpin.controller.BoardController.latest(javax.servlet.http.HttpSession,org.springframework.ui.Model)]: org.springframework.data.mapping.PropertyReferenceException: No property board found for type com.tecnooc.picpin.model.UserBoard
12:28:44,289 DEBUG ResponseStatusExceptionResolver:132 - Resolving exception from handler [public java.lang.String com.tecnooc.picpin.controller.BoardController.latest(javax.servlet.http.HttpSession,org.springframework.ui.Model)]: org.springframework.data.mapping.PropertyReferenceException: No property board found for type com.tecnooc.picpin.model.UserBoard
12:28:44,290 DEBUG DefaultHandlerExceptionResolver:132 - Resolving exception from handler [public java.lang.String com.tecnooc.picpin.controller.BoardController.latest(javax.servlet.http.HttpSession,org.springframework.ui.Model)]: org.springframework.data.mapping.PropertyReferenceException: No property board found for type com.tecnooc.picpin.model.UserBoard
12:28:44,291 DEBUG DispatcherServlet:959 - Could not complete request

Виняток

Виняток становить " org.springframework.data.mapping.PropertyReferenceException: No property board found for type com.tecnooc.picpin.model.UserBoard". Але, якщо я правильно зрозумів, властивість boardприсутня в PinItemі правильно відображається mappedBy = "board"в UserBoard.

org.springframework.data.mapping.PropertyReferenceException: No property board found for type com.tecnooc.picpin.model.UserBoard
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:271)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:245)
    at org.springframework.data.jpa.repository.query.QueryUtils.toJpaOrder(QueryUtils.java:408)
    at org.springframework.data.jpa.repository.query.QueryUtils.toOrders(QueryUtils.java:372)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:456)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:437)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:319)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:289)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:333)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:318)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy147.findAll(Unknown Source)
    at com.tecnooc.picpin.service.impl.BoardServiceImpl.findLatestBoards(BoardServiceImpl.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy148.findLatestBoards(Unknown Source)
    at com.tecnooc.picpin.controller.BoardController.latest(BoardController.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Я не розумію, чому цей виняток кидається. Будь-яка ідея, чому це відбувається?

Примітка. Я використовую сплячку як постачальник стійкості. Крім того, частина коду, яку я вклав тут, - це те, що я вважав, що має значення для проблеми. Якщо це не так, дайте мені знати, і я оновлю питання з необхідною порцією.


2
Я зіткнувся з тією ж проблемою, коли назвав вбудований ідентифікатор як MyCompositePK і спробував написати findByMyCompositePKUserId (Long userId) . Справа в тому, що він повинен бути як у верблюді, так і для сховища CRUD, щоб розрізняти властивості таблиці під час створення запиту з вашого методу. Отже, це має бути MyCompositePk та findByMyCompositePkUserId (Long userId)
EmeraldTablet

Відповіді:


138

Я зіткнувся з цим самим питанням і знайшов рішення тут: https://dzone.com/articles/persistence-layer-spring-data

Я перейменував власність юридичної особи. Але з Springs Automatic Custom Queries був інтерфейс, визначений для старої назви властивості.

public interface IFooDAO extends JpaRepository< Foo, Long >{
     Foo findByOldPropName( final String name );
}

Помилка вказала, що він більше не може знайти "OldPropName", і викинув виняток.

Цитувати статтю про DZone:

Коли Spring Data створює нову реалізацію репозиторію, він аналізує всі методи, визначені інтерфейсами, і намагається автоматично генерувати запити з імені методу. Хоча це має обмеження, це дуже потужний та елегантний спосіб визначення нових спеціальних методів доступу з дуже невеликими зусиллями. Наприклад, якщо у керованої сутності є поле імені (і стандартний геттер і сетер Java Bean для цього поля), визначення методу findByName в інтерфейсі DAO автоматично генерує правильний запит:

public interface IFooDAO extends JpaRepository< Foo, Long >{
     Foo findByName( final String name );
}

Це порівняно простий приклад; значно більший набір ключових слів підтримується механізмом створення запитів.

У випадку, якщо аналізатор не може співставити властивість з полем об'єкта домену, викидається наступний виняток:

java.lang.IllegalArgumentException: No property nam found for type class org.rest.model.Foo

86

Ваше ім'я невірно .

Відповідно до документації , якщо ваш сховище є UserBoardRepository, реалізація вашого власного сховища повинна мати ім'я як UserBoardRepositoryImpl, тут ви його назвали як BoardServiceImpl, ось чому він видає виняток.


1
крім того, всі класи / інтерфейси сховища повинні бути розміщені в одному каталозі - наскільки я знаю
Błażej Kocik

6
Я не знаю, чому настільки обґрунтовано, але в цьому питанні немає спеціального сховища. BoardServiceImplце просто послуга, що використовує UserBoardRepository.
Дідьє Л

це мій випадок! Я не мав жодних проблем до того, як я переніс заняття Impl у зовсім іншому пакеті, але після цього це сталося. Дякую
Бакстабу

Це врятувало мені день!
letimome

47

Виправлено. Під час використання CrudRepositorySpring ми повинні правильно додати ім'я властивості після findBy, інакше це дасть вам виняток "Немає властивостей для типу"

Я отримував цей виняток як. тому що ім'я властивості та назва методу не синхронізувалися.

Я використовував нижче код для доступу до БД.

public interface UserDao extends CrudRepository<User, Long> {
    User findByUsername(String username);

і мій Користувач домену має властивість.

@Entity
public class User implements UserDetails {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "userId", nullable = false, updatable = false)
    private Long userId;
    private String username;

1
Цей підхід мені допоміг - я використав неправильну назву властивості мого класу в методі "за замовчуванням" (надається інтерфейсом CrudRepository) (ieinstea методу findByDateOfStatisticsBetween () я використав метод findByDateBetween () іменування)
ryzhman

1
приклад findStatusIdнеправильно findByStatusIdправильно і для множинного перевірки імен stackoverflow.com/a/32796493/944593
Шаріфа

Заощадила мені тону часу. Дякую :).
Joey587

27

Оскільки ваше сховище JPA - це UserBoardRepository , то ваш власний інтерфейс повинен бути UserBoardRepositoryCustom (він повинен закінчуватися на "Custom"), а назва вашого класу реалізації має бути UserBoardRepositoryImpl (повинен закінчуватися на Impl; ви можете встановити його з іншим постфіксом за допомогою репозиторію- властивість impl-postfix )


17

ця помилка трапляється, якщо ви спробуєте отримати доступ до неіснуючої властивості

я гадаю, що сортування проводиться весною, property nameа не за real column name. а помилка вказує на те, що в "UserBoard"ньому немає властивості, названої "boardId".

звірі,

Дуб


Дякую. Щоб знайти це рішення, мені знадобилося певний час, тому що Весна скаржилася на щось зовсім інше. У мене є клас Aі клас, Bякий розширюється Aі має властивість x. Він скаржився, що не може знайти майно xв класі A...
GuiRitter

9

У моєму випадку у мене було ім'я друкарської помилки (кейс верблюда). Я назвав це "findbyLastName" і зіткнувся з цим винятком. Після того, як я змінив його на «findByLastName», виняток не було.


1
Зауважте собі: подвійна перевірка! :-)
lilalinux

8

Зауважте тут: відповіді Зейн XY та Алана Б. Ді досить непогані. Але для тих із вас, хто зараз використовує Spring Boot, і Spring Data, ось що було б більш сучасною відповіддю.

Припустимо, у вас такий клас, як:

@Entity
class MyClass {
    @Id
    @GeneratedValue
    private Long id;

    private String myClassName;
}

Тепер JpaRepositoryце виглядатиме так

interface MyClassRepository extends JpaRepository {
    Collection<MyClass> findByMyClassName(String myClassName);
}

Тепер ваша "власна" знахідка за методом повинна бути написана Collection<MyClass> findByMyClassName(String myClassName)саме тому, що Spring повинен мати якийсь механізм для відображення цього методу у MyClassвластивості myClassName!

Я зрозумів це, тому що мені здавалося природним знайти клас за його назвою семантично , тоді як насправді синаксично ви знайдете myClassName

Ура


2

схоже, що назва вашого методу JpaRepository не відповідає жодній змінній у ваших класах сутності. Переконайтесь, що назва вашого методу відповідає змінній у вашому класі сутності

наприклад: ви отримали ім'я змінної під назвою "active", а ваш власний метод JpaRepository каже "findByActiveStatus", і оскільки немає змінної під назвою "activeStatus", вона кине "PropertyReferenceException"



0

У JPA відносини мають одного власника, і, використовуючи mappedByу своєму UserBoardкласі, ви говорите, що PinItemє власником цього двонаправленого відносини, і що властивість у PinItemвідносинах названаboard .

У вашому UserBoardкласі у вас немає полів / властивостей з назвою board, але він має властивістьpinItemList , тому ви можете спробувати використовувати його.


0

Якщо у вашому проекті було використано Spring-Boot, ви можете спробувати додати ці примітки до свого Application.java.

@EnableJpaRepositories(repositoryFactoryBeanClass=CustomRepositoryFactoryBean.class)
@SpringBootApplication

public class Application {.....

0

ви повинні отримати сторінку ,, як це

 @Override
public Page<UserBoard> findLatestBoards() {
    PageRequest request = new PageRequest(
                 0, PresentationUtil.PAGE_SIZE, 
                 Sort.Direction.DESC, "boardId"
    );
    return boardRepository.findAll(request).getContent();
}


0

У мене була подібна проблема, яка викликала у мене кілька годин головного болю.

Мій метод сховища:

public List<ResultClass> findAllByTypeAndObjects(String type, List<Object> objects);

Я отримав помилку, що тип властивості не знайдено для типу ResultClass.

Рішення полягало в тому, що jpa / hibernate не підтримує множини? Тим не менш, видалення 's' вирішило проблему:

public List<ResultClass> findAllByTypeAndObject(String type, List<Object>

Вибачте, що ви видалили? Ці два рядки виглядають однаково
Реймонд Чен,

@ user7344209 Я виправив цю помилку. Дивіться назву методу другого зразка коду.
mirisbowring

Навіть для об'єктів з назвою сутності?
P Satish Patro

0

Це виняток у мене було недавно, коли я переходив до нової версії весняного завантаження (від 1.5.4 до 1.5.20). Проблема була в структурі пакета репозиторію.

Проблема: Під одним і тим же пакетом були пакунки: сховище, репозиторійCustom та repositoryImpl.

Рішення: Перевпорядкуйте пакети репозиторію, щоб пакет репозиторіїв містив repositoryCustom-пакет і репозиторійCustom-пакет містить repositoryImpl:

сховище 
   |
   ----- сховищеМистка
             |
             ----- сховищеImpl

0

Інший сценарій, який ще не згадувався тут, що спричинив цю помилку, - це API, який отримує Pageable(або Sort) і передає його, як це є, сховищу JPA під час виклику API від Swagger.

Значення за замовчуванням для Pageableпараметра для Swagger таке:

  {
    "page": 0,
    "size": 0,
    "sort": [
      "string"
    ]
  }

Зауважте, що "string"існує властивість, яка існує. Запуск API без його видалення та зміни не спричинитьorg.springframework.data.mapping.PropertyReferenceException: No property string found for type ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.