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が自分のデータベースと一致しないのか理解できません。ありがとう
ありがとう、なぜ私のUserクラスでテーブル名を指定した場合、クエリがUtilisateurテーブルと一致しないのですか?ありがとうございます。 – zaafrani
@zaafraniなぜなら、 'jpql'や' query'を書いている間、私たちはエンティティ名を使うことを期待しています。あなたが 'Utilisateur'を使いたいのであれば、それをエンティティ注釈で指定する必要があります。例 'entity(name =" Utilisateur ")'。 –
ありがとう – zaafrani