programing

CrudRepository를 유형으로 확인할 수 없습니다.

newsource 2023. 9. 2. 08:33

CrudRepository를 유형으로 확인할 수 없습니다.

메이븐을 사용하여 스프링 부트 프로젝트(Spring Initializr에서 생성)를 진행하고 있습니다.CrudRepository를 생성하려고 하는데 "CrudRepository can't solved to a type" 오류가 발생하고 패키지 org.springframework.data.repository에 CrudRepository 클래스가 없습니다.저는 무엇이 잘못된 것인지 이해하기 위해 많은 튜토리얼을 따르려고 노력했지만 아무것도 찾지 못했습니다.제 POM은 올바르게 보입니다. 메이븐 클린 및 패키지 목표를 실행할 때 빌드 실패가 없습니다. 프로젝트를 업데이트하고 소스를 다운로드하려고 했지만 아무 것도 작동하지 않습니다.이클립스가 CrudRepository 클래스를 찾을 수 없습니다.

다음은 제 POM 파일입니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.myquickstart</groupId>
    <artifactId>SpringQuickstart</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringQuickstart</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

그리고 내 저장소:

package com.myquickstart.repositories;

import org.springframework.stereotype.Repository;
import org.springframework.data.repository.CrudRepository;
import com.myquickstart.entities.Movie;

@Repository
public interface MovieRepository extends CrudRepository<Movie, Long> {

}

도와주셔서 고마워요.

편집:

저는 이클립스의 "Maven => Update project"로 프로젝트를 업데이트했습니다.그 후 "문제" 보기에서 다음 오류가 발생했습니다.

C:/Users/carrm/.m2/repository/org/hibernate/hibernate-core/5.0.11.Final/hibernate-core-5.0.11.Final.jar' in project 'SpringQuickstart' cannot be read or is not a valid ZIP file

이 문제를 해결하는 방법을 잘 모르겠습니다./제 CrudRepository 문제와 관련된 링크는 무엇입니까?

추신 - 원래 답변에 사용된 인터페이스가 클래스가 아님을 알고 있습니다.하지만 다시는 같은 질문을 할 수 없기 때문에.답은 인터페이스 부분을 놓칠 수 있는 초보자를 위한 것입니다.

일반적으로 저장소를 인터페이스 대신 클래스로 만들 때 이러한 유형의 오류가 발생합니다.CrudRepository는 인터페이스이며, 인터페이스만 사용하여 확장할 수 있습니다.

틀렸습니다(가끔 리포지토리를 만들 때 실수로 클래스를 만듭니다).

 public class MovieRepository extends CrudRepository<Movie, Long>

오류: CrudRepository를 유형으로 확인할 수 없습니다.

인터페이스로 변경했습니다.

public interface MovieRepository extends CrudRepository<Movie, Long>

메이븐 도서관에 문제가 있었던 것 같습니다.의 전체 내용을 삭제했습니다..m2/repository그리고 뛰었습니다.Maven > Update project이클립스에서 메이븐이 전체 콘텐츠를 다시 다운로드해야 했습니다.이후에는 더 이상 오류가 없습니다!

편집

user3578953에서 지적한 바와 같이 maven-clean을 실행하면 전체 m2 저장소 내용을 삭제했을 때와 동일한 작업이 수행됩니다.제가 처음 이 질문을 했을 때 메이븐에 대해 잘 몰랐지만, 이것은 분명히 문제를 해결하는 더 나은 방법입니다.

이 문제가 발생하면 org.springframework.data.repository를 확인합니다.CrudRepository 가져오기가 작동 중입니다.그렇다면 이 대답은 아마도 해결책이 아닐 것입니다.작동하지 않고 "data" 부분이 강조 표시되어 있으면 pom.xml을 확인하고 아직 없으면 다음 종속성을 추가합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

종속성을 추가한 후에는 로컬 .m2 디렉터리를 삭제하고 명령줄에서 빌드합니다.메이븐 프로젝트를 작업영역으로 다시 가져올 수도 있습니다.

spring-data-jpa-...에 대한 이동 종속성 검사org.springframework.data.jpa.repository 패키지에 CrudRepository.class가 포함된 경우 RELEASE.jar.

클래스 파일이 있으면 maven->update project와 run->maven-clean만 하면 됩니다.

클래스 파일이 없으면 mvnrepository.com 에서 패키지를 검색하면 됩니다.

종속성에 문제가 없는 것 같습니다. 다음 버전을 사용해 보십시오.

  1. 과 함께 를 빌드합니다(Maven은 Maven과 함께$ mvn spring-boot:run)
  2. IDE:에서 다음을 합니다.right click on project-Maven-update project

저도 같은 문제가 있었습니다. .m2 콘텐츠를 모두 삭제하고 메이븐을 다시 가져옵니다.효과가 있습니다!

메시지가 사라지는 방법은 다음과 같습니다.

enter image description here

제 경우에는 CrudRepository를 가져올 수 없었습니다.

해결 방법

Intellij 아이디어 사용

  1. "extends CrudRepository"를 입력하고 CrudRepository를 클릭한 후 Alt를 누르고 Enter를 누릅니다.
  2. 메이븐 종속성 추가 클릭
  3. CrudRepository

종속성 추가

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>2.4.8</version>
</dependency>

때때로 (의존성을 추가한 후) org.junit을 가져오는 오류가 발생합니다.주피터.api테스트 후 추가

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.8.0-M1</version>
    <scope>test</scope>
</dependency>

프로젝트를 만들 때 JPA 종속성을 추가합니다.날 위해 일했다!

CrudRepository클래스가 아닌 인터페이스입니다.를 바꿉니다.extends와 함께implements.

언급URL : https://stackoverflow.com/questions/42396706/crudrepository-cannot-be-resolved-to-a-type