2017-06-19 71 views
0

這是我的代碼在我的控制器下面,即使我傳遞一個有效的密鑰我總是得到null作爲結果。可以有人告訴我爲什麼會發生這種情況。下面是我的存儲庫,控制器和域類春季啓動jpa存儲庫接口總是返回空

public interface AbcRepository extends JpaRepository<ForgotPasswordToken, int> { 
    Abc findByHashKey(String hashKey); 
    Abc findByUser(User user); 
} 

映射:

@RequestMapping(value = "/validateKey/{hashKey}", method = RequestMethod.GET) 
public ResponseEntity validateKey(@PathVariable String hashKey) { 
    Abc abc = AbcRepository.findByHashKey(hashKey); 
    if (abc == null) { 
     return ResponseEntity.badRequest().body("Invalid key"); 
    } 
    return ResponseEntity.ok().body(abc.getUser()); 
} 

實體:

@Entity 
@Data 
public class Abc { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id; 

    @OneToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "user_id") 
    private User user; 

    private String hashKey; 

    private String email; 

    @Temporal(TemporalType.TIMESTAMP) 
    private Date createdAt; 

    @PrePersist 
    public void onCreate() { 
     this.createdAt = new Date(); 
    } 

} 
+0

你的版本庫返回'ForgotPasswordToken'不'Abc',你關鍵是'long'不'int' – ByeBye

+0

或者,你沒有任何實體符合您的條件 – ByeBye

+0

嗨,我試着用長期仍然得到相同的結果。 Im使用ForgotPasswordToken而不是Abc.Sorry在複製代碼時犯了一個錯誤,希望使用別名爲ForgotPasswordToken,因此使用Abc – user2452537

回答

1

你在存儲庫和ABC類中有不同類型的主鍵。

你應該改變

JpaRepository<ForgotPasswordToken, int> 

JpaRepository<ForgotPasswordToken, Long> 

而且在ABC類

private Long id; 

使用Long id,建議使用對象類型作爲JPA @Id代替原語。因此請將long更改爲Long

Primitive or wrapper for hibernate primary keys