2017-03-26 8 views
0

스프링 부트 응용 프로그램에서 봄 데이터 나머지의 다른 동작을 참조하십시오 내가 개체 ID를 일치하여 사용자 개체를 검색하는 데 사용자 지정 쿼리를 갖는 개체 리포지토리 클래스에서 쿼리 및 이메일 ID는 unique.I입니다 null 값을 개체가 존재합니다. 나는 우편 배달부에서 Rest URI를 부르고있다. 이와 관련봄 부팅 나머지 JPA 쿼리 반환 null 개체에서 전자 메일로 쿼리

+1

우리가 도울 수 있을까요? 디버깅을 시작하기 만하면됩니다. 쿼리에 전달할 전자 메일이 있다고 생각합니까 (후행 또는 선행 공백 없음)? 이메일이 테이블에 실제로 있습니까? 그것을 삽입 한 트랜잭션이 커밋 되었습니까? 앱이 사용하고 있다고 생각하는 데이터베이스 또는 스키마를 사용하고 있습니까? 기존의 다른 이메일에서도 작동합니까? 코드에 흔적을 추가하십시오. 디버거를 사용하십시오. 우리가 할 수있는 일은 거의 없습니다. –

+0

네, DB에 전자 메일이 존재합니다. 또한 트림으로 확인합니다. 개체 목록을 가져 오려고하면 이메일 ID가있는 특정 개체가 표시되지만 단일 개체로 검색하려고하면 가져올 수 없습니다. – Taimur

+0

SQL 쿼리와 같은 조건으로 검사하여 데이터를 반환했습니다. 이는 공백을 가져 오는 문제 일 수 있습니다. @Query (value = "사용자 이름에서 lastName을 선택하십시오. u.email은 % : email %"과 (와) 같지만 조건이 같으면 객체 목록을 반환하므로 요구 사항이 아닙니다. – Taimur

답변

0

디버깅이 끝나고 마침내 전자 메일 ID가 컨트롤러 매핑 된 메서드에 도달 할 수없고 [email protected]에 도달하면 test @ gmail 및 기간 및 com 값으로 읽히지 만, 해결 방법은 URI 매핑을 변경하고 매개 변수 끝에 /를 추가하여 업데이트 된 URI가 이제
@RequestMapping (값 = "/ user/email/{email} /", 생성 = MediaType.APPLICATION_JSON_VALUE)

1

하시기 바랍니다 필요 --UserRepository

@Repository 
@Transactional 
public interface UserRepository extends JpaRepository<User, Long> {  

    @Query(value ="select u from User u where u.email = :email") 
    User findByEmail(@Param("email") String email); 


} 

--UserServiceImpl

@Service("userService") 
@Transactional 
public class UserServiceImpl implements IUserService{ 

    @Autowired 
    private UserRepository userRepository; 


    @Override 
    public User findByEmail(String email) { 
     return userRepository.findByEmail(email); 
    } 
} 

--Controller

@RestController 
@RequestMapping("/api") 
public class UserControllerRest { 

@Autowired(required = true) 
UserServiceImpl userService;  
@RequestMapping(value = "/user/email/{email}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
      public ResponseEntity<User> getUserByEmail(@PathVariable("email") String email) { 
       System.out.println("Fetching User with id " + email); 
       User user = userService.findByEmail(email); 
       if (user == null) { 
        System.out.println("User with email " + email + " not found"); 
        return new ResponseEntity<User>(HttpStatus.NOT_FOUND); 
       } 
       return new ResponseEntity<User>(user, HttpStatus.OK); 
      } 

} 

도움말 자세한 내용을 추가 할 수 있습니다. GitHub 또는 뭔가 프로젝트를 추가하십시오. 사용자 모델은 어떻게 생겼습니까? IUserService 대신 서비스 구현을 주입합니다. 아마도 이것이 문제 일 수 있습니다.

+0

서비스 구현을 IUserService로 대체하여 서비스 인젝션을 고정 시켰습니다. – Taimur