2017-06-19 10 views
0

私のコントローラの下にこのマイコードは、私はいつも有効なキーを渡してもresult.Can誰かが私のリポジトリ、コントローラそして、ドメインクラス春のブートjpaリポジトリのインターフェイスは常にnullを返します

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' ' – ByeBye

+0

int'それとも、あなたの条件に一致するすべてのエンティティを持っていないではない'である – ByeBye

+0

こんにちは私が試してみましたまだ長いと同じ結果が得られます。 ImはForgotPasswordTokenをAbc.の代わりにどこでも使用しています。ここでコードをコピーしてForgotPasswordTokenのエイリアス名を使用したかったので間違いました。Abc – user2452537

答えて

1

ますリポジトリとABCクラスに異なる種類の主キーを持つ

あなたは

JpaRepository<ForgotPasswordToken, Long> 

JpaRepository<ForgotPasswordToken, int> 

を変更し、ABCクラスのLong id

private Long id; 

を使用し、JPA @Idの代わりとして、オブジェクト型を使用することが推奨されなければなりませんプリミティブ。したがってlongLongに変更してください。

Primitive or wrapper for hibernate primary keys

関連する問題