스프링 부트 응용 프로그램에서 봄 데이터 나머지의 다른 동작을 참조하십시오 내가 개체 ID를 일치하여 사용자 개체를 검색하는 데 사용자 지정 쿼리를 갖는 개체 리포지토리 클래스에서 쿼리 및 이메일 ID는 unique.I입니다 null 값을 개체가 존재합니다. 나는 우편 배달부에서 Rest URI를 부르고있다. 이와 관련봄 부팅 나머지 JPA 쿼리 반환 null 개체에서 전자 메일로 쿼리
0
A
답변
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
우리가 도울 수 있을까요? 디버깅을 시작하기 만하면됩니다. 쿼리에 전달할 전자 메일이 있다고 생각합니까 (후행 또는 선행 공백 없음)? 이메일이 테이블에 실제로 있습니까? 그것을 삽입 한 트랜잭션이 커밋 되었습니까? 앱이 사용하고 있다고 생각하는 데이터베이스 또는 스키마를 사용하고 있습니까? 기존의 다른 이메일에서도 작동합니까? 코드에 흔적을 추가하십시오. 디버거를 사용하십시오. 우리가 할 수있는 일은 거의 없습니다. –
네, DB에 전자 메일이 존재합니다. 또한 트림으로 확인합니다. 개체 목록을 가져 오려고하면 이메일 ID가있는 특정 개체가 표시되지만 단일 개체로 검색하려고하면 가져올 수 없습니다. – Taimur
SQL 쿼리와 같은 조건으로 검사하여 데이터를 반환했습니다. 이는 공백을 가져 오는 문제 일 수 있습니다. @Query (value = "사용자 이름에서 lastName을 선택하십시오. u.email은 % : email %"과 (와) 같지만 조건이 같으면 객체 목록을 반환하므로 요구 사항이 아닙니다. – Taimur