스프링 데이터 JPA - "유형에 대한 속성을 찾을 수 없습니다" 예외
글쎄요, 구글을 검색해 보니 많은 결과가 나왔지만, 어느 것도 제 문제에 답을 해 줄 수 없었습니다.자, 이제 시작해보자.
핀터레스트 클론의 최소한의 구현을 통해 Spring MVC와 Spring Data JPA를 연구하려고 합니다.제 문제와 관련이 있다고 생각되는 코드 부분은 다음과 같습니다.
모델/엔티티
@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
in the method in the method in 。BoardService
"Found" 가 "No Property Found" return boardRepository.findAll(request).getContent();
톰캣
디버깅 로그
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)
왜 이 예외가 발생하는지 모르겠어요.왜 이런 일이 일어나는지 아십니까?
메모: 휴지 상태를 지속성 공급자로 사용하고 있습니다.또, 여기에 기재한 코드 부분은, 문제와 관련 있다고 생각되는 부분입니다.그렇지 않은 경우 알려주시면 질문 내용을 업데이트해 드리겠습니다.
같은 문제에 부딪혔는데, 해결방법은 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는 새로운 Repository 구현을 작성할 때 인터페이스에 의해 정의된 모든 메서드를 분석하여 메서드 이름에서 쿼리를 자동으로 생성하려고 합니다.이 방법에는 제한이 있지만 새로운 커스텀액세스 방식을 정의하는 매우 강력하고 우아한 방법입니다.예를 들어 관리 엔티티에 이름 필드(및 해당 필드의 Java Bean 표준 getter 및 setter)가 있는 경우 DAO 인터페이스에서 findByName 메서드를 정의하면 올바른 쿼리가 자동으로 생성됩니다.
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
이름이 올바르지 않습니다.
설명서에 따르면 저장소가 다음과 같은 경우UserBoardRepository
은 「이름」으로 해 UserBoardRepositoryImpl
에서는 이렇게 을 붙였습니다.BoardServiceImpl
그래서 예외가 발생하는 겁니다.
「 」를 사용하고 있는 .CrudRepository
봄의 경우 find 후에 속성 이름을 올바르게 추가해야 합니다.그렇지 않으면 "유형에 대한 속성을 찾을 수 없습니다"라는 예외가 나타납니다.
속성 이름과 메서드 이름이 동기화되지 않았기 때문에 이 예외가 발생했습니다.
DB Access에 대해 아래 코드를 사용했습니다.
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;
JPA 저장소 이름은 UserBoardRepository이므로 커스텀 인터페이스 이름은 UserBoardRepositoryCustom('Custom'으로 끝나야 함), 구현 클래스 이름은 UserBoardRepositoryImpl(저장소 impository-post 속성을 사용하여 다른 포스트픽스로 설정할 수 있음)이어야 합니다.
이 에러는, 언인스톨 속성에 액세스 하려고 하면 발생합니다.
에는 봄까지 것 요.property name
가가 by by and by by가real column name
는 에러에 라고 것을 나타내고 있습니다."UserBoard"
은 "boardId"
.
베스트
오크
제 경우, 제 메서드명에 오타(카멜케이스).FindbyLastName이라는 이름을 붙였고, 이 예외에 직면했습니다."find By Last Name"으로 변경 후 예외가 사라졌습니다.
여기: Zane XY와 Alan B의 답변이 있습니다.디는 꽤 잘해요.그러나 지금 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)
에는 이 을 매핑하는 합니다.MyClass
myClassName
!
이것은 의미론적으로 클래스를 찾는 것이 당연하다고 생각했기 때문에 깨달은 것입니다만, 실제로는 myClassName으로 찾는 구문론입니다.
건배.
내 경우 PageRequest 객체를 만들 때 정렬에 잘못된 열 이름을 사용했습니다.
PageRequest paging = PageRequest.of(page, 30, Sort.by("column_name"));
올바른 구문은
PageRequest paging = PageRequest.of(page, 30, Sort.by("columnName"));
스프링에서 '유형 열에 대한 속성을 찾을 수 없습니다' 오류가 발생했습니다.저장소와 엔티티를 보고 있었는데 아무것도 찾지 못했습니다.PageRequest 객체를 작성한 컨트롤러에서 오류가 발생했습니다.
따라서 잘못된 의미론을 사용하면 오류가 발생하지만 Repository에서만 오류가 발생할 필요는 없습니다.
사용자 정의 JpaRepository 메서드 이름이 엔티티 클래스의 변수와 일치하지 않는 것 같습니다.메서드 이름이 엔티티 클래스의 변수와 일치하는지 확인하십시오.
예를 들어, "active"라는 변수 이름이 있고 커스텀 JpaRepository 메서드는 "findByActiveStatus"라고 합니다.activeStatus라는 변수가 없기 때문에 "PropertyReferenceException"을 슬로우합니다.
비슷한 문제가 있어서 몇 시간 동안 머리가 아팠어요.
저장소 방법은 다음과 같습니다.
public List<ResultClass> findAllByTypeAndObjects(String type, List<Object> objects);
ResultClass 유형의 속성 유형을 찾을 수 없다는 오류가 발생했습니다.
해결방법은 jpa/hibernate가 다중성을 지원하지 않는다는 것이었다.단, 를 삭제하면 다음과 같은 문제가 해결됩니다.
public List<ResultClass> findAllByTypeAndObject(String type, List<Object>
이 된 또 시나리오는, 이 에러의 원인이 되고 있는 은, 「API」, 「API」, 「API」를 수신하는 입니다.Pageable
(오류)Sort
Swagger API는 JPA를 사용합니다.
:Pageable
츠키다
{
"page": 0,
"size": 0,
"sort": [
"string"
]
}
점에 주의:"string"
존재하는 속성이 있습니다. 또는 하지 않고 하면 API가 합니다.org.springframework.data.mapping.PropertyReferenceException: No property string found for type ...
repo e.i repository.findByUsername(사용자명)의 디폴트 콜에서 속성명을 확인해 주세요.
소유자를 , JPA를 사용하여 의 소유자를 .mappedBy
안에서UserBoard
당신이 말하는 클래스PinItem
는, 그이며, 「」의에 있습니다.PinItem
를 그 of of of of of of of of of of of of라고 합니다.board
.
고객님의 고객명UserBoard
클래스가 "class"인.board
pinItemList
그 대신 그 속성을 사용할 수 있습니다.
프로젝트에서 Spring-Boot을 사용한 경우 Application.java에서 이 주석을 추가할 수 있습니다.
@EnableJpaRepositories(repositoryFactoryBeanClass=CustomRepositoryFactoryBean.class)
@SpringBootApplication
public class Application {.....
사용 페이지(이렇게)가 표시됩니다.
@Override
public Page<UserBoard> findLatestBoards() {
PageRequest request = new PageRequest(
0, PresentationUtil.PAGE_SIZE,
Sort.Direction.DESC, "boardId"
);
return boardRepository.findAll(request).getContent();
}
모델 또는 엔티티 클래스에 해당 속성이 정의되어 있어야 합니다.
최근 스프링 부트 버전(1.5.4에서 1.5.20)으로 이행할 때 이 예외가 발생했습니다.저장소 패키지 구조에 문제가 있습니다.
문제:동일한 패키지 아래에 repository, repositoryCustom 및 repositoryImpl이 있습니다.
솔루션:리포지토리 패키지에 리포지토리가 포함되도록 리포지토리 패키지를 재정렬합니다.사용자 지정 패키지 및 리포지토리 사용자 지정 패키지에 리포지토리 Impl이 포함됨:
저장소|----- 저장소 커스텀|-----repositoryImpl
제안과 더불어 @Repository를 사용하여 Repository 인터페이스에 주석을 다는 것도 제안합니다.
스프링 IOC는 이를 저장소로 탐지하지 못할 수 있으며, 따라서 엔티티 및 해당 속성을 탐지하지 못할 수 있습니다.
콩에서 복합 키를 사용하는 경우 파라미터는 객체가 됩니다.새로운 조합에 따라 findBy 메서드를 조정해야 합니다.
@Embeddable
public class CombinationId implements Serializable {
private String xId;
private String yId;
}
public class RealObject implements Serializable, Persistable<CombinationId> {
@EmbeddedId private CombinationId id;
}
이 경우 저장소 findBy 메서드는 다음과 같습니다.
@Repository
public interface PaymentProfileRepository extends JpaRepository<RealObject, String> {
List<RealObject> findById_XId(String someString);
}
MessageStatus와 같은 ENUM을 사용하는 경우 변환기가 필요할 수 있습니다.이 클래스를 추가합니다.
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
/**
* Convert ENUM type in JPA.
*/
@Converter(autoApply = true)
public class MessageStatusConverter implements AttributeConverter<MessageStatus, Integer> {
@Override
public Integer convertToDatabaseColumn(MessageStatus messageStatus) {
return messageStatus.getValue();
}
@Override
public MessageStatus convertToEntityAttribute(Integer i) {
return MessageStatus.valueOf(i);
}
}
이것은 나와 같은 비슷한 문제를 가진 사람을 도울 수 있을 것이다, 나는 모든 이름 짓기와 인터페이스 표준을 따랐다. 하지만 나는 여전히 문제에 직면해 있었다.
My param name was --> update_datetime
update_datetime을 기준으로 엔티티를 내림차순으로 가져오려고 했는데 오류가 발생했습니다.
org.springframework.data.mapping.PropertyReferenceException: No property update found for type Release!
왠지 언더스코어 문자를 읽을 수 없었습니다 --> ( _ )
so for workaround i changed the property name as --> updateDatetime
JpaRepository 메서드 사용에도 동일하게 사용합니다.
성공했어!
저는 프로젝션을 사용했는데 같은 오류가 있었습니다.
나는 사용했었다.getIssueTime();
대신getCreateTime();
내가 이름을 붙인 자산을 고쳤더니 문제가 해결되었다.
이러한 문제는 클래스에 컨스트럭터가 없기 때문입니다.기본 생성자 생성
다음부터 구현 가능PagingAndSortingRepository
.
내 속성명은 "card_set_code"이고, "cardSetCode"로 변경하여 작업했습니다.
언급URL : https://stackoverflow.com/questions/19583540/spring-data-jpa-no-property-found-for-type-exception
'programing' 카테고리의 다른 글
라이브러리가 -g로 컴파일되었는지 어떻게 알 수 있습니까? (0) | 2022.08.12 |
---|---|
Java에서 두 정수를 올바르게 비교하려면 어떻게 해야 합니까? (0) | 2022.08.12 |
Vuex 모듈은 다른 Vuex 모듈을 감시할 수 있습니까? (0) | 2022.08.12 |
vue SSR를 사용하여 루트 가드 내의 스토어에 어떻게 액세스합니까? (0) | 2022.08.12 |
VueJs 모듈 빌드 실패:오류: 디렉토리를 기준으로 사전 설정된 "@vue/app"을 찾을 수 없습니다. (0) | 2022.08.12 |