유형에 대한 속성을 찾을 수 없습니다...커스텀 스프링 데이터 저장소
커스텀 스프링 저장소를 구현하려고 합니다.인터페이스는 다음과 같습니다.
public interface FilterRepositoryCustom {
List<User> filterBy(String role);
}
구현:
public class FilterRepositoryImpl implements FilterRepositoryCustom {
...
}
및 "메인" 저장소로 커스텀 저장소를 확장합니다.
public interface UserRepository extends JpaRepository<User, String>, FilterRepositoryCustom {
...
}
Spring Boot을 사용하고 있으며 문서에 따르면 다음과 같습니다.
기본적으로는 Spring Boot은 JPA 저장소 지원을 활성화하고 @Spring Boot Application이 있는 패키지(및 그 서브 패키지)를 검색합니다.
응용 프로그램을 실행하면 다음 오류가 나타납니다.
org.springframework.data.data.disc.PropertyReferenceException:사용자 유형에 대한 속성 filterBy를 찾을 수 없습니다!
여기서의 문제는 작성 중이지만에서 사용하고 있다는 것입니다.이 작업을 수행하려면 작성해야 합니다.
기본적으로
public interface UserRepositoryCustom {
List<User> filterBy(String role);
}
public class UserRepositoryImpl implements UserRepositoryCustom {
...
}
public interface UserRepository extends JpaRepository<User, String>, UserRepositoryCustom {
...
}
Spring Data 2.x
이 답변은 Spring 1.x용으로 작성되었습니다.Matt Forsythe가 지적한 바와 같이 Spring Data 2.0에서 명명 예상이 변경되었습니다.구현이 에서 변경되었습니다.the-final-repository-interface-name-with-an-additional-Impl-suffix
로.the-custom-interface-name-with-an-additional-Impl-suffix
.
따라서 이 경우 구현의 이름은 다음과 같습니다.UserRepositoryCustomImpl
.
스프링 구성에서 FilterRepositoryCustom의 inclass가 선택되지 않은 경우에도 이 오류가 발생할 수 있습니다.
@EnableJpaRepositories(basePackageClasses = {RepoPackageMarker.class, FilterRepositoryCustomImpl.class})
저도 같은 문제가 있었어요.패키지 구조가 이와 같은지 확인하십시오.
custom
impl
- FilterRepositoryCustomImpl.class
- FilterRepositoryCustom.class
커스텀 리포의 사용을 시도해도 구현이 표시되지 않기 때문입니다.(도입은 스프링에서 확인할 수 있도록 동일한 패키지 또는 하위 패키지에 넣어야 합니다.)
누군가에게 도움이 될지도 몰라(^^^^)
꼭 해야 할 일인가요?customMethod()
CustomRepository에는 다음 중 하나의 파라미터만 정의할 수 있습니다.
1. 엔티티 클래스명 -customMethod(User user)
,
2. 엔티티 클래스의 속성 -customMethod(String firstName)
여기서 firstName은 User Entity 클래스의 속성입니다.
커스텀 같은 건 안 돼요?메서드(CustomCriteria 기준), 조건 클래스에는 동적 쿼리를 구성하는 데 사용되는 다양한 속성이 포함됩니다.
예.getStatusByCriteria(CustomCriteria criteria), CustomCriteria
@Component로 주석을 단 단순한 pojo로, 봄철에 의해 식별됩니다.
이것을 시도하면, 다음의 에러가 표시됩니다.
org.springframework.data.data.disc.PropertyReferenceException:UserRepository 유형에 대한 속성 기준을 찾을 수 없습니다!
나에게 열쇠는
- @EnableJpaRepository(리포지토리 BaseClass = MyRepositoryImpl.class)
- 인터페이스의 @NoRepositoryBean 주석
spring ver https://docs.spring.io/spring-data/data-commons/docs/2.3.4.RELEASE/reference/html/ # studiatory 관련 문서를 참조하십시오.
그 결과 다음과 같이 됩니다.
@NoRepositoryBean
public interface SliceRepository<T, ID> extends JpaRepository<T, ID> {..}
public class SliceRepositoryImpl<T, ID> extends SimpleJpaRepository<T, ID> implements SliceRepository<T, ID> {..}
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactory",
basePackages = {"com.some.servicename.repository"},
repositoryBaseClass = SliceRepositoryImpl.class
)
저도 이 오류가 있었어요.패키지로 ElasticSearch 저장소를 구성했기 때문에 발생했습니다.
@EnableElasticsearchRepositories("some.package")
다음으로 MyElastic Search Repository를 패키지 'some.package'에서 다른 패키지로 이동했지만 구성을 변경하지 않았습니다.
나도 내 프로젝트에서 같은 문제를 겪었어.pom.xml에 행을 추가하여 문제를 해결했습니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>com/my/package/entities/*.java</include>
<include>com/my/package/repositories/*.java</include>
<include>com/my/package/repositories/impl/*.java</include> <!-- add this -->
</includes>
</configuration>
</plugin>
프래그먼트인터페이스에 대응하는 클래스명의 가장 중요한 부분은 Inpact postfix 입니다.
이전 방식:
Entity aThing = repository.findOne(1L);
새로운 방법:
Optional<Entity> aThing = repository.findById(1L);
언급URL : https://stackoverflow.com/questions/41467894/no-property-found-for-type-custom-spring-data-repository
'programing' 카테고리의 다른 글
HTTPS에서 Google 글꼴 로드, 콘텐츠 차단 (0) | 2023.03.08 |
---|---|
LWP로 JSON POST 요청을 하려면 어떻게 해야 하나요? (0) | 2023.03.08 |
angular.js의 컨트롤러 간에 변수 공유 (0) | 2023.03.08 |
Javascript에서 CSV 파일을 어레이에 로드합니다. (0) | 2023.03.08 |
html 내의 각도 함수를 호출합니다. (0) | 2023.03.08 |