Bahar Verileri JPA - "Tür için Mülk Bulunamadı" İstisnası


127

Google'da arama yaptım ve birçok sonuç buldum, ancak hiçbiri sorunuma cevap veremedi. İşte başlıyor.

Pinterest klonunun minimal bir uygulamasını yaparak Spring MVC ve Spring Data JPA'yı incelemeye çalışıyorum. Bu nedenle, kodun benim problemimle alakalı olduğunu düşündüğüm bölümleri aşağıdadır.

Modeller / Varlıkları

@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...
}

Hizmet

@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
}

depo

public interface UserBoardRepository extends JpaRepository<UserBoard, Integer> {

}

Şimdi, findLatestBoardsyöntemi içinde çağırdığımda, hatta BoardService"Özellik Bulunamadı" istisnası atılıyor return boardRepository.findAll(request).getContent();. İşte tomcat günlüğünden alıntı.

HATA AYIKLAMA GÜNLÜĞÜ

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

İstisna

İstisna " org.springframework.data.mapping.PropertyReferenceException: No property board found for type com.tecnooc.picpin.model.UserBoard" dir. Ancak, doğru anladıysam, özellik boardmevcuttur PinItemve doğru bir şekilde mappedBy = "board"in ile eşlenir 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)

Bu istisnanın neden atıldığını anlamıyorum. Neden olduğu hakkında bir fikriniz var mı?

Not: Persistence sağlayıcısı olarak Hibernate kullanıyorum. Ayrıca, buraya koyduğum kod kısmı, problemle ilgili olduğunu düşündüğüm şeydir. Değilse, bana bildirin, soruyu gerekli kısımla güncelleyeceğim.


2
Katıştırılmış bir kimliği MyCompositePK olarak adlandırdığımda ve findByMyCompositePKUserId (Long userId) yazmayı denediğimde aynı sorunla karşılaştım . Burada önemli olan nokta, yönteminizden sorgu oluştururken tablo özellikleri arasında ayrım yapmak için CRUD deposu için de deve durumda olması gerekir. Bu nedenle, MyCompositePk ve findByMyCompositePkUserId (Long userId)
EmeraldTablet

Yanıtlar:


139

Aynı sorunla karşılaştım ve çözümü burada buldum: https://dzone.com/articles/persistence-layer-spring-data

Bir varlık özelliğini yeniden adlandırmıştım. Ancak Springs Otomatik Özel Sorgular ile eski özellik adı için tanımlanmış bir arabirim vardı.

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

Hata, artık "OldPropName" bulamadığını gösterdi ve istisnayı attı.

DZone'daki makaleden alıntı yapmak için:

Spring Data yeni bir Depo uygulaması oluşturduğunda, arayüzler tarafından tanımlanan tüm yöntemleri analiz eder ve yöntem adından otomatik olarak sorgular oluşturmaya çalışır. Bunun sınırlamaları olsa da, yeni özel erişim yöntemlerini çok az çabayla tanımlamanın çok güçlü ve zarif bir yoludur. Örneğin, yönetilen varlığın bir ad alanı varsa (ve bu alan için Java Bean standart alıcı ve ayarlayıcı), DAO arayüzünde findByName yönteminin tanımlanması otomatik olarak doğru sorguyu oluşturacaktır:

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

Bu nispeten basit bir örnektir; çok daha büyük bir anahtar kelime kümesi sorgu oluşturma mekanizması tarafından desteklenir.

Ayrıştırıcının özelliği etki alanı nesne alanıyla eşleştirememesi durumunda, aşağıdaki istisna atılır:

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

86

Adınız doğru değil .

Gereğince belgeleri deponuzu ise, UserBoardRepository, özel depo uygulanması olarak adı olmalıdır UserBoardRepositoryImplburada olarak adlandırılmış, BoardServiceImplbu istisna atar yüzden o.


1
ek olarak, tüm depo sınıfları / arayüzleri tek bir dizine yerleştirilmelidir - bildiğim kadarıyla
Błażej Kocik

6
Bunun neden bu kadar yükseltildiğini bilmiyorum, ancak bu soruya dahil olan özel bir depo yok. BoardServiceImplyalnızca UserBoardRepository.
Didier L

bu benim davam! Impl sınıflarını tamamen farklı bir pakette taşımadan önce hiçbir sorun yaşamadım ama ondan sonra bu oldu. Teşekkür ederim
Buckstabue

Bu benim günümü kurtardı!
letimome

48

Düzeltildi, CrudRepositorySpring'i kullanırken , bulduktan sonra mülk adını doğru bir şekilde eklememiz gerekiyor, aksi takdirde size "Tür için Özellik Bulunamadı" istisnası verecektir.

Olarak bu istisnayı alıyordum. çünkü özellik adı ve yöntem adı senkronize değildi.

DB Erişimi için aşağıdaki kodu kullandım.

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

ve Etki Alanı Kullanıcımın mülkü var.

@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
Bu yaklaşım bana yardımcı oldu - havuzun 'varsayılan' (CrudRepository arayüzü tarafından sağlanan) yönteminde sınıfımın bir özelliğinin yanlış adını kullandım (yani findByDateOfStatisticsBetween () buldumByDateBetween () yöntem adlandırma kullandım)
ryzhman

1
örnek findStatusIdyanlış findByStatusIddoğru ve çoklu adlandırma kontrolü için stackoverflow.com/a/32796493/944593
shareef

Benim için bir ton zaman kazandım. Teşekkür ederim :).
Joey587

27

JPA depo adınız UserBoardRepository olduğundan, özel Arayüz adınız UserBoardRepositoryCustom ('Custom' ile bitmelidir) ve uygulama sınıfı adınız UserBoardRepositoryImpl olmalıdır (Impl ile bitmelidir; depoyu kullanarak farklı bir postfix ile ayarlayabilirsiniz- impl-postfix özelliği)


17

var olmayan mülke erişmeyi denerseniz bu hata oluşur

Benim tahminim, sıralama ilkbaharda yapılır, tarafından property namedeğil real column name. ve hata, içinde "UserBoard"adlandırılmış bir özellik olmadığını gösterir "boardId".

en iyiler,

Meşe


Teşekkür ederim. Bu çözümü bulmam biraz zaman aldı çünkü Spring tamamen farklı bir şeyden şikayet ediyordu. Bir sınıfım Ave Bgenişleyen Ave bir özelliği olan bir sınıfım var x. xSınıfta mülk bulamadığından şikayet ediyordu A...
GuiRitter

9

Benim durumumda, yöntem adımda bir yazım hatası (deve durumu) vardı. Onu "findbyLastName" olarak adlandırdım ve bu istisnayla karşılaştım. Bunu "findByLastName" olarak değiştirdikten sonra istisna gitti.


1
Kendime not: İki kez kontrol edin! :-)
lilalinux

8

Buraya dikkat edin: Zane XY ve Alan B. Dee'nin cevapları oldukça iyi. Yine de Spring Boot'u ve Spring Data'yı şimdi kullanacak olanlar için, işte daha modern bir cevap.

Şöyle bir sınıfınız olduğunu varsayalım:

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

    private String myClassName;
}

Şimdi bunun JpaRepositoryiçin bir şuna benzeyecek

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

Şimdi "özel" tarafından bulmak yazıldığından yöntem zorunluluk Collection<MyClass> findByMyClassName(String myClassName)İlkbahar üzerinde bu yöntemi eşlemek için bir düzenek bazı gerektiğinden kesin MyClassmülkiyet myClassName!

, Bana göre, doğal görünüyordu çünkü bu out düşündüm adıyla bir sınıf bulmak semantik aslında, oysa, synatxically sen myClassName tarafından bulmak

Şerefe


2

Özel JpaRepository yöntem adınız varlık sınıflarınızdaki hiçbir Değişkenle eşleşmiyor gibi görünüyor. Yöntem adınızın varlık sınıfınızdaki bir değişkenle eşleştiğinden emin olun

örneğin: "active" adında bir değişken adınız var ve özel JpaRepository yönteminiz "findByActiveStatus" diyor ve "activeStatus" adında bir değişken olmadığından "PropertyReferenceException" atacak


1

Lütfen repo ei deposunun varsayılan çağrısındaki mülk adını kontrol edin.findByUsername (kullanıcı adı)


0

JPA'da bir ilişkinin tek bir sahibi vardır ve mappedBy sizin de UserBoardbunu anlatmak sınıfın PinItemo iki yönlü ilişkinin sahibidir ve mülkiyet o PinItemilişkinin adlandırılır board.

Senin içinde UserBoardsınıfın isimle birlikte herhangi alanları / özellikleri yoktur board, ancak bir özelliği vardırpinItemList , bunun yerine o mülkü kullanmaya çalışan bir nedenle.


0

Projeniz Spring-Boot kullandıysa, bu ek açıklamaları Application.java dosyanıza eklemeyi deneyebilirsiniz.

@EnableJpaRepositories(repositoryFactoryBeanClass=CustomRepositoryFactoryBean.class)
@SpringBootApplication

public class Application {.....

0

bunun gibi bir kullanım sayfası almalısın ,

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

0

Model veya varlık sınıfınızda bu özelliği tanımlamalısınız.


0

Birkaç saat baş ağrısına neden olan benzer bir sorun yaşadım.

Depo yöntemim şuydu:

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

ResultClass türü için özellik türünün bulunamadığı hatasını aldım.

Çözüm şuydu, jpa / hibernate çoğulları desteklemiyor mu? Bununla birlikte, 's' karakterini kaldırmak sorunu çözdü:

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

Pardon, neyi çıkardın? Bu iki satır aynı görünüyor
Raymond Chen

@ user7344209 Bu hatayı düzelttim. İkinci kod örneğinin yöntem adına bakın.
mirisbowring

Varlık adı Nesneler için bile mi?
P Satish Patro

0

Son zamanlarda daha yeni bir yaylı önyükleme sürümüne geçerken bu istisnayı yaşadım (1.5.4'ten 1.5.20'ye). Sorun, depo paketi yapısındaydı.

Sorun: Aynı paketin altında paketler vardı: repository, repositoryCustom ve repositoryImpl.

Çözüm: Depo paketlerini yeniden düzenleyin, böylece depo paketi repositoryCustom paketi ve repositoryCustom paketi repositoryImpl içerir:

depo 
   |
   ----- depo Özel
             |
             ----- repositoryImpl

0

Henüz bahsedilmeyen, bu hataya neden olan başka bir senaryo, API'yi Swagger'dan çağırırken JPA havuzuna alan Pageable(veya Sort) ve bunu olduğu gibi aktaran bir API'dir.

PageableParametrenin Swagger varsayılan değeri şudur:

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

"string"Orada var olan bir özelliğe dikkat edin . API'yi silmeden veya değiştirmeden çalıştırmak,org.springframework.data.mapping.PropertyReferenceException: No property string found for type ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.