• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

에러 문의

22.06.28 16:06 작성 조회수 262

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)

[질문 내용]
아래는 어떤 에러나요? Bean을 생성 못한다는것 같은데?
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file [C:\Users\kimtw\Desktop\spring study\books-mag\books-mag\out\production\classes\book\booksmag\SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springDataJpaBookMemberRepository' defined in book.booksmag.repository.SpringDataJpaBookMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)! Reason: Failed to create query for method public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)! No property 'name' found for type 'BookMember'!; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)! No property 'name' found for type 'BookMember'!

 

 
 
 
 
 

답변 10

·

답변을 작성해보세요.

2

David님의 프로필

David

2022.06.29

많은 부분이 편의를 위해 추상화되어 있어서 그렇게 느끼실 수 있을 것 같습니다.

아래 공식 문서를 참고하시면 대략적으로 어떤 느낌인지 아시는데 도움되실거에요.

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation

ktwmomo님의 프로필

ktwmomo

질문자

2022.06.29

감사합니다.

1

박종웅님의 프로필

박종웅

2022.07.27

친절한 답변 감사합니다! 개인적으로 도움이 많이 되었습니다.

0

ktwmomo님의 프로필

ktwmomo

질문자

2022.06.29

public class BookMember {
private String bookName;
Optional<BookMember> findByBookName(String bookName);

상기처럼 했더니 에러는 안나네요.  

감사합니다. 코볼세데라 어렵네요 ㅋㅋ

개념이 안잡힘

 

 

 

 

 

0

David님의 프로필

David

2022.06.29

메서드명을 따라 쿼리를 만들 때 camelCase를 기준으로 만들기 때문입니다.

0

ktwmomo님의 프로필

ktwmomo

질문자

2022.06.29

 "findBy" 이후에 엔티티의 속성 이름을 붙이다. 이 속성 이름은 첫 글자는 대문자로 한다. 

상기처럼 

Optional<BookMember> findByBook_name(String book_name);

으로 바꾸고 BookMember에도 book_name인데

private String book_name; 

Failed to create query for method public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByBook_name(java.lang.String)! No property 'book' found for type 'BookMember'!

왜 Book_name이 아니고 'book' 으로 인식되나요?  

"_"를 쓰면 안되나요?

귀찬게 해서 죄송합니다.

 

 

0

David님의 프로필

David

2022.06.29

질문자 분께서 repository 메서드를 findByName으로 지었기 때문에 name 필드가 존재해야 합니다.

 

1. repository의 메서드명을 관례에 맞게 수정하는 방법

2. 테이블 구성을 변경하는 방법

2가지 옵션이 있습니다.

 

본인이 할 수 있는 방법으로 변경해주시면 됩니다.

 

아울러, jparepository를 구현하고 메서드를 만들 경우 어떻게 쿼리가 만들어지는지에 대해 학습하시면 도움이 되실 것 같습니다.

https://it-hhhj2.tistory.com/99

0

ktwmomo님의 프로필

ktwmomo

질문자

2022.06.29

name이라는 필드는 필수로 있어야하나요?

테이블 구성이 

CREATE TABLE BOOK_MAG

(BOOK_ID NUMBER(13) PRIMARY KEY, 

 BOOK_NAME VARCHAR(255),

 BOOK_KDC NUMBER(3),

 BOOK_PUBLISHER_BUSINESS_NO  NUMBER(10),

 BOOK_PUBLISHER  VARCHAR(255),

 BOOK_AUTHOR_ID NUMBER(9),

 BOOK_AUTHOR  VARCHAR(255),

 BOOK_MAKE_DATE DATE,

 BOOK_PRICE NUMBER(13)

 

 );

이런데요?

0

David님의 프로필

David

2022.06.29

 No property 'name' found for type 'BookMember'!

BookMember 타입에 'name'이라는 프로퍼티가 없다는 오류입니다.

올려주신 코드를 보니 해당 객체에 name이라는 필드가 보이지 않습니다.

0

ktwmomo님의 프로필

ktwmomo

질문자

2022.06.29

빠른 답변  감사합니다.

BookMember에

@Entity
@Table(name="book_mag")
public class BookMember {
// @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private Long book_id; //BOOK_ID NUMBER(13) PRIMARY KEY
private String book_name; //BOOK_NAME VARCHAR(255),
private Long book_kdc; //BOOK_KDC NUMBER(3),

상기 처럼 되있고

SpringDataJpaBookMemberRepository에 

public interface SpringDataJpaBookMemberRepository extends JpaRepository<BookMember,Long>, BookMemberRepository {

@Override
Optional<BookMember> findByName(String book_name);
}

상기처럼 했는데도 동일 에러 나오는데요? 어떻게해야할지 모르겠어요?

Failed to create query for method public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)! No property 'name' found for type 'BookMember'!

 

 

 

 

 

 

 

 

 

0

David님의 프로필

David

2022.06.28

안녕하세요. ktwmomo님, 공식 서포터즈 David입니다.

에러를 잘 들여다보면 이유가 나와있습니다.

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file [C:\Users\kimtw\Desktop\spring study\books-mag\books-mag\out\production\classes\book\booksmag\SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0;

=> springConfig 빈을 생성하지 못한다

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springDataJpaBookMemberRepository' defined in book.booksmag.repository.SpringDataJpaBookMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed;

=> springDataJpaBookMemberRepository 빈을 생성하지 못한다.

nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)!

=> findByName 쿼리를 생성하지 못한다.

Reason: Failed to create query for method public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)!

No property 'name' found for type 'BookMember'!;

=> 그 이유는 BookMember에 name 프로퍼티가 없어서

nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional book.booksmag.repository.SpringDataJpaBookMemberRepository.findByName(java.lang.String)!

No property 'name' found for type 'BookMember'!

위 정보를 토대로 BookMember를 다시 살펴보시고 시도해주세요.

감사합니다.