0

Hi I am trying to create a simple CRUD Common Repository utilizing spring boot mongo.

However, an error occurred and it has not been resolved for 3 days. This is my source code.

  1. MemberDTO.java

     @Getter
     @Setter
     @Document(collection = "member")
     public class MemberDTO {
    
    
         @Id
         private String memberId;
    
         private String memberPwd;
    
         private String memberName;
    
         private String memberEName;
    
    
     }
    
  2. MemberController.java

     @Controller
     @RequestMapping("/member")
     public class MemberController {
    
    
         @Autowired
         private MemberSv memberSv;
    
         @RequestMapping(value = "/join", method = RequestMethod.POST)
         public String member_save(MemberDTO memberDTO)
         {
             memberSv.member_save(memberDTO);
             return "join_form";
         }
     }
    
  3. MemberSvImp.java

     @Service
     public class MemberSvImp{
    
         @Autowired
         private MemberSv memberSv;
    
         public MemberDTO member_save(MemberDTO memberDTO) {
             memberSv.save(memberDTO);
             return memberDTO;
         }
    
     }
    
  4. MemberSv.java

     public interface MemberSv extends CommonRepository<MemberDTO, String> {
    
    
         MemberDTO member_save(MemberDTO memberDTO);
    
     }
    
  5. CommonRepository.java

     @NoRepositoryBean
     public interface CommonRepository<T, ID extends Serializable> extends         MongoRepository<T, ID> {
    
         <E extends T> E save(E entity);
     }
    
  6. Error... org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating
    bean with name 'memberController': Unsatisfied dependency expressed through field
    'memberSv'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberSv' defined in com.example.accountproject.models.interfaces.MemberSv defined in @EnableMongoRepositories declared on AccountProjectApplication:
    Invocation of init method failed; nested exception is
    org.springframework.data.repository.query.QueryCreationException: Could not create query
    for public abstract com.example.accountproject.documents.MemberDTO .accountproj
    ect.documents.MemberDTO)! Reason: No property member found for type MemberDTO! Did you mean 'memberId'?; nested exception is
    org.springframework.data.mapping.PropertyReferenceException: No property member found for type MemberDTO! Did you mean 'memberId'?

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
DB K
  • 13
  • 3
  • I think you need @Repository in MemberSv.java to Spring know it is a repo component. – duyetpt Jun 20 '21 at 03:26
  • I added @Repositroy, but the same error. – DB K Jun 20 '21 at 03:33
  • 1
    (1) Follow Java naming conventions. This is always a good idea but is mandatory for automatic Spring Data repositories. (2) Why are you inventing your own instead of using `CrudRepository`? – chrylis -cautiouslyoptimistic- Jun 20 '21 at 03:56
  • It's because we want to use save as one no matter what document comes in common. – DB K Jun 20 '21 at 04:28
  • 1
    @DBK Try removing the `member_save` method from `MemberSv.java`. JPA might be trying to resolve the query through the method name. – ThilankaD Jun 20 '21 at 06:30
  • @DBK And better you have the understanding that there are its own pros and cons saving documents with different types in the same collection. You can find some good read in this [Question](https://developer.mongodb.com/community/forums/t/store-data-in-a-single-collection-or-multiple-collections/102261/2) in MongoDB community forum and in another [question](https://stackoverflow.com/questions/22202394/is-it-possible-to-store-multiple-types-of-objects-into-1-mongodb-collection) in here. – ThilankaD Jun 20 '21 at 06:38

0 Answers0