Springboot - пустой ответ - PullRequest
0 голосов
/ 29 июня 2018

Я создаю простой вызов get rest из базы данных MySQL, проблема в том, что он возвращает пустой объект.

Сам звонок принимает по электронной почте (я знаю, что это не лучший подход), вот мой код:

Организация:

@Entity
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private int id;
    private String email;
    private String password;
    private String firstName;
    private String userName;
    private String lastName;
    private boolean active;
    @Temporal(TemporalType.DATE)
    private Date createDate;
    @Temporal(TemporalType.DATE)
    private Date updateDate;
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Collection<Role> roles;

// constructor
// get and setter

}

Repository:

public interface UserRepository extends JpaRepository<User, Long> {
//    User findById (Integer Id);

    @Query("SELECT u.id FROM User u where u.id = :id") 
    User findById(@Param("id") Integer id);

    User findByEmail (String email);
}

Услуги:

@Service("userService")
public class UserService {

    private String status, message;
    private final HashMap map = new HashMap();

    @Autowired
    private UserRepository userRepository;
//    @Autowired
//    private RoleRepository roleRepository;

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

}

Контроллер:

@RestController("userControllerService")
@RequestMapping("/user/account")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/test-get/{email}")
    public User jj(@PathVariable("email") String email){
        return userService.findByUserEmail(email);
    }
}

И моя база данных содержит следующие данные:

enter image description here

И вот ответ, который я получаю после нажатия на URL

enter image description here

Понятия не имею, почему мой ответ пуст!

1 Ответ

0 голосов
/ 29 июня 2018

Вы не можете иметь @ в пути URI. Закодируйте его с помощью% 40.

Ссылка: Можно ли использовать символ (@) внутри URL-адресов?

Кроме того, правильным способом является использование в качестве параметра запроса, так как это более хороший идентификатор и допускает @, так как он анализируется как строка

    @GetMapping("/test-get")
    public User jj(@RequestParam("email") String email){
        return userService.findByUserEmail(email);
    }

В любом случае, использовать кодированный URL как /test-get/email=a@b.com? или / test-get / a% 40b.com для вашего предыдущего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...