亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在spring boot中無法獲取用戶名

在spring boot中無法獲取用戶名

收到一只叮咚 2022-06-15 16:52:00
問題是:當我使用 JpaRepository 并使用一種方法通過用戶名獲取用戶時,如下代碼:public interface UserRepository extends JpaRepository<User, Integer> {    @Query(value = "select * from users where username = :name", nativeQuery = true)    User findUserByName(@Param("name") String name);}這是實體:@Entity@Table(name = "users")@Datapublic class User {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Integer id;    @Column(name = "username", nullable = false, unique = true)    private String username;    @Temporal(TemporalType.TIMESTAMP)    @Column(name = "joined_date", nullable = false, unique = true)    @CreatedDate    private Date joinedDate;    @Column(name = "password")    private String password;    @Column(name = "bio")    private String bio;    @Column(name = "email", nullable = false, unique = true)    private String email;}   這是控制器:@RestController@RequestMapping("/u")public class UserController {    @Autowired    private UserRepository repo;    ....    @GetMapping("/{name}")    public ResponseEntity<User> getUsernameAndPasswordByName(@PathVariable("name") String name) {        User user = repo.findUserByName(name);        if(user == null) {            return new ResponseEntity(HttpStatus.BAD_REQUEST);        }        return new ResponseEntity<User>(user, HttpStatus.OK);    }}這是從數據庫獲取所有用戶時 JSON 的全部數據:當我從名稱(網址:)獲取用戶時localhost/u/{username}:我保證從 URL 輸入的名稱是正確的。
查看完整描述

4 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

您有兩種具有相同映射的方法


1 - getUsernameAndPasswordByName(@PathVariable("name") String name)

@GetMapping("/{name}")

2 - getUserById(@PathVariable("id") int id)

@GetMapping("/{id}")

這對春天來說是模棱兩可的;只需將其中一個映射更改為如下所示:


@GetMapping("/find-by-id/{id}")


查看完整回答
反對 回復 2022-06-15
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

該錯誤表明您已經映射了兩個具有相似路徑的 RestController 方法:

getUsernameAndPasswordByNamegetUserById。

嘗試使用不同@GetMapping的值,例如:@GetMapping("/name/{name}"), @GetMapping("/id/{id}").


查看完整回答
反對 回復 2022-06-15
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

UserController的路徑中有重復的映射/u/{name}。getUserByIdgetUsernameAndPasswordByName具有相同的端點。



查看完整回答
反對 回復 2022-06-15
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

Spring 無法區分getUsernameAndPasswordByName(String)和getUserById(Integer)因為您的映射不明確。


嘗試為該getUsernameAndPasswordByName(String)方法使用查詢參數,它會更合適 -


    getUsernameAndPasswordByName(@PathVariable("name") String name) 


    //and


    getUserById(@PathVariable("id") int id)


查看完整回答
反對 回復 2022-06-15
  • 4 回答
  • 0 關注
  • 307 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號