2017-11-18 7 views
0

:내 모델 및 인터페이스에 문제가 있습니까? (자바 봄 부트 웹 애플리케이션) 나는 간결함을 위해 생략 전체 디렉토리에 말한다 실행시 오류가 (이

오류 이름으로 콩을 만드는 'idea_Service'파일 에 정의 된 [... co.kr에서 \ vincentsnow \ 불만족 의존성 파라미터 생성자 0 통해 표현; 중첩 예외 org.springframework.beans.factory.BeanCreationException이다 : \ Idea_Service.class] brightideas \ 서비스 오류 이름 bean 작성 'idea_Repository'실패 init 메소드의 호출 ; 중첩 예외는 java.lang.IllegalArgumentException : 아니요 관리 유형 : class java.lang.Object 상위

다른 :

오류 이름으로 콩을 만드는 'idea_Repository'초기화 방법의 호출에 실패; 난 아무데도이 소문자 이름을 사용하지 않은 클래스 java.lang.Object 상위

: 아니 관리되는 형식 : 중첩 된 예외는 java.lang.IllegalArgumentException가있다. 나는이 메시지를 이해할 수 없다 ... 나는 그것을 컴파일하려고 시도하고 있지만 어떤 이유로 파일 이름을 바꾸는 것으로 추측하고있다. 내 파일에서 STS는 오류를 발견하지 않습니다. 여기에 그들이있다 :

Idea_Service.java (서비스)

package com.vincentsnow.brightideas.services; 

import java.util.List; 
import org.springframework.stereotype.Service; 
import com.vincentsnow.brightideas.models.Idea; 
import com.vincentsnow.brightideas.models.User; 
import com.vincentsnow.brightideas.repositories.Idea_Repository; 

@Service 
public class Idea_Service { 
    private Idea_Repository ideaRepository; 
    public Idea_Service(Idea_Repository ideaRepository){ 
     this.ideaRepository = ideaRepository; 
    } 

    public List<Idea> allIdeas(){ 
     return ideaRepository.findAllIdeas(); 
    } 

    public void createUser(String idea, User posted_by){ 
     ideaRepository.save(idea, posted_by); 
    } 

    public Idea oneIdea(Long id) { 
     return ideaRepository.getSingleIdeaWhereId(id); 
    } 

    public List<Idea> likesof(Long id){ 
     return ideaRepository.getLikesOfIdea(id); 
    } 
} 

Idea.java (모델)

package com.vincentsnow.brightideas.models; 

import java.util.List; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.JoinTable; 
import javax.persistence.ManyToMany; 
import javax.persistence.ManyToOne; 
import javax.validation.constraints.Size; 
import com.vincentsnow.brightideas.models.User; 

@Entity 
public class Idea { 

     @Id 
     @GeneratedValue 
     private Long id; 

     @Column 
     @Size(min=3, max=5000) 
     private String idea; 

     @ManyToOne(fetch = FetchType.LAZY) 
     @JoinColumn(name="idea_id") 
     private User posted_by; 

     @ManyToMany(fetch = FetchType.LAZY) 
     @JoinTable(
      name = "likes", 
      joinColumns = @JoinColumn(name = "idea_id"), 
      inverseJoinColumns = @JoinColumn(name = "user_id") 
      ) 
      private List<Idea> likes; 


} 
가 이

Idea_Repository.java (저장소)

package com.vincentsnow.brightideas.repositories; 

import java.util.List; 
import org.springframework.data.jpa.repository.Query; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 
import com.vincentsnow.brightideas.models.Idea; 
import com.vincentsnow.brightideas.models.User; 

@Repository 
public interface Idea_Repository extends CrudRepository { 

    @Query("SELECT a FROM ideas a") 
    List<Idea> findAllIdeas(); 

    @Query(value="INSERT INTO ideas (idea, posted_by) VALUES (?1, ?2, ?3, ?4)", nativeQuery=true) 
    Idea save(String idea, User posted_by); 

    @Query("SELECT a FROM ideas a WHERE id=?1") 
    Idea getSingleIdeaWhereId(Long id); 

    @Query(value="SELECT likes WHERE idea_id = ?1", nativeQuery=true) 
    List<Idea> getLikesOfIdea(Long id); 

} 

가 무엇이 잘못입니다 그들과 함께? 이 오류는 무엇을 의미합니까? STS는 무엇을하려고합니까?

+0

persistence.xml 파일 – Rinat

+0

을 표시하십시오. Idea_Service.java 아래에 Idea.java를 붙여 넣은 것 같습니다. – vandale

+0

아, 그래서 있습니다! 편집 됨, 감사합니다. –

답변

2

CrudRepository은 관리하는 유형과 해당 유형 ID의 유형 인 두 개의 형식 매개 변수를 사용합니다. 이 매개 변수를 제공하지 않았으므로 실제로는 ObjectObject입니다. Object은 관리 대상이 아니며 (@Entity으로 주석 처리되지 않았습니다) 오류 메시지가 표시됩니다. Spring 데이터에게 저장소가 실제로 관리하려고하는 클래스가 Idea이라고 알려줄 필요가있다. 시도 :

public interface Idea_Repository extends CrudRepository<Idea, Long> { 
    // .. 
} 

을 또한, 당신은 findAllIdeas, save 또는 getSingleIdeaWhereId 필요하지 않습니다; Spring Data JPA는 동등한 방법을 무료로 제공합니다.