Pessoal sou novo no mundo Java e como todo iniciante ainda estou colhendo experiencia.
Estou com um problema para realizar uma query com WHERE no Hibernate.
Obs: a conexão mysql funciona perfeitamente, os métodos insert, find, delete e update também funciona perfeitamente bem.
O método em questão é o getLoginByEmail do LoginDao
Meu Hibernate Util:
public class HibernateUtil {
public static SessionFactory sessionFactory = null;
static {
Configuration config = new Configuration();
config.configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
builder.applySettings(config.getProperties());
MetadataSources metadataSources = new MetadataSources();
metadataSources.addAnnotatedClass(Login.class);
metadataSources.addAnnotatedClass(Editorial.class);
Metadata metadata = metadataSources.buildMetadata(builder.build());
sessionFactory = metadata.buildSessionFactory();
}
public static Session getSession(){
Session session = sessionFactory.openSession();
return session;
}
}
Meu DAO de Login:
public class LoginDao {
public void insert(Login dados) {
Login user = null;
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
try{
session.save(dados);
transaction.commit();
} catch (HibernateException e) {
e.printStackTrace();
transaction.rollback();
} finally {
session.close();
}
}
public Login find(int id) {
Login user = null;
Session session = HibernateUtil.getSession();
try{
user = session.load(Login.class,1);
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
session.close();
}
return user;
}
public void update(Login dados) {
Login user = null;
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
try{
session.saveOrUpdate(dados);
session.flush ();
transaction.commit();
} catch (HibernateException e) {
e.printStackTrace();
transaction.rollback();
}finally {
session.close();
}
}
public void delete(Login dados) {
Login user = null;
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
try{
session.delete(dados);
session.flush ();
transaction.commit();
} catch (HibernateException e) {
e.printStackTrace();
transaction.rollback();
}finally {
session.close();
}
}
public Login getLoginByEmail(String email,String senha) {
Login user = null;
Session session = HibernateUtil.getSession();
Transaction tx;
try{
tx = session.beginTransaction ();
List<Login> list = session.createQuery (" from usuarios where email = :email AND senha = :senha ",Login.class)
.setParameter ("email",email)
.setParameter ("senha",senha)
.getResultList();
user = list.get (0);
tx.commit ();
} catch (Exception e) {
System.out.println(e.getMessage());
}finally {
session.close();
}
return user;
}
}
No Output ele reporta o seguinte (parte que julgo important rs):
Caused by: java.lang.NoSuchMethodError: org.hibernate.Session.createQuery(Ljava/lang/String;Ljava/lang/Class;)Lorg/hibernate/query/Query;
at admin.models.login.LoginDao.getLoginByEmail(LoginDao.java:87)
Poderiam me dizer o que estou fazendo de errado?
Obrigado!