2017-06-19 3 views
0

das ist mein Code unten in meinem Controller, obwohl ich einen Schlüssel übergeben, die gültig ist, ich bekomme immer Null als Ergebnis.Kann jemand mir sagen, warum ist das passiert. Unter ist mein Repository, Controller und Domain-KlasseSpring Boot Jpa Repository-Schnittstelle gibt immer Null

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

Mapping:

@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:

@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

Ihr Repository zurückkehrt 'ForgotPasswordToken' nicht' Abc', und Sie Schlüssel 'long' nicht' int' – ByeBye

+0

Oder Sie haben keine Einheiten mit Ihren Kriterien übereinstimmen – ByeBye

+0

Hallo Ich habe versucht, mit bekomme immer noch das gleiche Ergebnis. Ich benutze ForgotPasswordToken überall anstelle von Abc.Sorry gemacht einen Fehler beim Kopieren des Codes wollte hier Alias-Namen für ForgotPasswordToken verwendet so Abc – user2452537

Antwort

1

Sie verschiedene Arten von Primärschlüsseln im Repository und in der ABC-Klasse haben.

sollten Sie

ändern
JpaRepository<ForgotPasswordToken, int> 

zu

JpaRepository<ForgotPasswordToken, Long> 

Und verwenden Long id in der ABC-Klasse

private Long id; 

Und es wird empfohlen, um Objekttypen als JPA @Id anstelle von Primitive. Ändern Sie also long zu Long.

Siehe Primitive or wrapper for hibernate primary keys

Verwandte Themen