2017-02-13 6 views
0

私はSpringブートとSpringデータJpaを使用してWebアプリケーションを開発しています。私がしたいのは、ユーザー名を与えられたデータベースからユーザーを取得するカスタムのクエリメソッドを書くことです。ここに私のAppUserRepositoryインタフェースは、CrudRepositoryインタフェースを拡張されていますSpringデータJpaカスタムクエリメソッドは、テスト時に既存のレコードを使用していてもnullを返します。

@Repository 
public interface AppUserRepository extends CrudRepository<AppUser,Integer>{ 

    public AppUser findOneByUsername(@Param("username") String username); 

} 

これはAPPUSERクラスです:

その後
@Entity(name="appUser") 
@Table(name="appUser") 
public class AppUser { 

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

@Column(name="nume") 
@NotNull 
private String nume; 

@Column(name="prenume") 
@NotNull 
private String prenume; 

@Column(name="username", unique=true) 
@NotNull 
private String username; 

@Column(name="password") 
@NotNull 
private String password; 

@Column(name="email", unique=true) 
@NotNull 
private String email; 

@Column(name="authorities") 
@NotNull 
private String authorities; 

public AppUser() { 

} 

public AppUser(Long id, String nume, String prenume, String username, String password, String email, 
     String authorities) { 
    super(); 
    this.id = id; 
    this.nume = nume; 
    this.prenume = prenume; 
    this.username = username; 
    this.password = password; 
    this.email = email; 
    this.authorities = authorities; 
} 


public String getEmail() { 
    return email; 
} 


public void setEmail(String email) { 
    this.email = email; 
} 


public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public String getNume() { 
    return nume; 
} 

public void setNume(String nume) { 
    this.nume = nume; 
} 

public String getPrenume() { 
    return prenume; 
} 

public void setPrenume(String prenume) { 
    this.prenume = prenume; 
} 

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public String getAuthorities() { 
    return authorities; 
} 

public void setAuthorities(String authorities) { 
    this.authorities = authorities; 
} 
} 

、私はgetUserByUsername方法を実装AppUserControllerを定義しています。

@RestController 
@RequestMapping(value="/user") 
public class AppUserController { 

@Autowired 
private AppUserRepository appUserRepository; 

@RequestMapping(value="/all", method=RequestMethod.GET) 
public ResponseEntity getAllUsers() { 
    return new ResponseEntity((List)appUserRepository.findAll(), new HttpHeaders(), HttpStatus.OK); 

} 

@RequestMapping(value="/{username}", method=RequestMethod.GET) 
public ResponseEntity getUserByUsername(@PathVariable("username") String username) { 

    return new ResponseEntity<AppUser>(appUserRepository.findOneByUsername(username), new HttpHeaders(), HttpStatus.OK); 

} 

私は方法をテストしていた場合existingUsernameはすでに私のデータベースに存在するユーザ名であり、私はhttp://localhost:8080/user/existingUsernameを呼び出しています。

問題は、ユーザー名が存在していてもクエリが常にnullであることです。

私はfindAppUserByUsernameまたは findByUsernameのように、この方法のために他の名前を試してみましたが、それらのどれも機能しません。また、getAllUsersメソッドは正常に動作します。

アップデート:私はいくつかのデバッグを行っていると私はドットがされた後、彼らはパターンname.surnameと私が持っているに従っているので、問題は、私はのは、パス変数として全体のユーザー名を送ることができるということであることに気づきました常に無視される。

+0

で見つけるだろう、この

public List<AppUser> findByUsername(String username); 

にリポジトリ方式を変更してみてください、あなたはJaiwo99 @あなたのクラス 'AppUser' – Jaiwo99

+0

を投稿することができ、私は今、それが戻っています今 –

答えて

0

はFindoneが主キー find one

+0

それを投稿空リスト –

関連する問題