2016-03-20 9 views
1

こんにちは私はSpringブートでMysqlを使用していますが、CrudRepositoryでクエリメソッドを使用しているとき、私のテーブル。 Springブートorg.hibernate.hql.internal.ast.QuerySyntaxException:Utilisateurがマップされていません(MYSQLを使用)

マイUserクラス:

@Entity 

@Table(name="Utilisateur") 

public class User{ 

    @Id 
    private long id; 
    @Column(name="nom") 
    private String nom; 
    @Column(name="prenom") 
    private String prenom; 
    @Column(name="admin") 
    private boolean admin; 
    @Column(name="actif") 
    private boolean actif; 
    @Column(name="logins") 
    private String logins; 
    @Column(name="email") 
    private String email; 
    @Column(name="naissance") 
    private String naissance; 
    @Column(name="pwd") 
    private String pwd; 
    @Column(name="compte") 
    private String compte; 

    public User(){ 

    } 

    public User(String nom, String prenom, boolean admin, boolean actif, String logins, String email, String naissance, String pwd, String compte) { 
     this.nom = nom; 
     this.prenom = prenom; 
     this.admin = admin; 
     this.actif = actif; 
     this.logins = logins; 
     this.email = email; 
     this.naissance = naissance; 
     this.pwd = pwd; 
     this.compte = compte; 
    } 
/*Getters and setters*/ 
} 

私の第二のクラスが実装しCrudRepository:

@Repository 
public interface UserDao extends CrudRepository<User,Long>{ 

    public User findByEmail(String email); 
    public List<User> findByLogins(String logins); 
    public List<User> findAll(); 

    @Query("SELECT u FROM Utilisateur u where id=?1") 
    public User findById(int Id); 
} 

そして、仕上げのために、私はJUnitを用いたテスト用のクラスを使用しています:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = RecipyApplication.class) 
@WebAppConfiguration 
public class RecipyApplicationTests { 

    @Autowired 
    private UserDao userDao; 
    @Test 
    public void should_get_user_by_id(){ 
     User user = userDao.findById(1); 
     Assert.assertNotNull("the id can't be null ",user); 
    } 

} 

と私@Queryを使用しているときに、なぜhibernateが自分のデータベースと一致しないのか理解できません。ありがとう

答えて

2

SELECT u FROM Utilisateurの代わりにSELECT u FROM Userを@Queryに使用してください。

テーブル名ではなくエンティティ名を使用する必要があります。

+0

ありがとう、なぜ私のUserクラスでテーブル名を指定した場合、クエリがUtilisateurテーブルと一致しないのですか?ありがとうございます。 – zaafrani

+1

@zaafraniなぜなら、 'jpql'や' query'を書いている間、私たちはエンティティ名を使うことを期待しています。あなたが 'Utilisateur'を使いたいのであれば、それをエンティティ注釈で指定する必要があります。例 'entity(name =" Utilisateur ")'。 –

+0

ありがとう – zaafrani

関連する問題