我想将此代码SQL传输到HQL 我尝试这个代码,但它没有工作
public Admin connect(String login, String password)
{
SessionFactory sessionFactory =createSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Admin admin=(Admin) session.createQuery(from admin where login_admin='"+login+"' and password_admin='"+password+"');
session.getTransaction().commit();
return admin;
我的班级
public class Admin extends personne implements java.io.Serializable {
private String loginAdmin;
private String passwordAdmin;}
抱歉我的英文不好
答案 0 :(得分:0)
Hibernate会将您的HQL转换为SQL。您可以编写如下所示的HQL查询来获取特定对象(或记录)。 createQuery()
期望HQL查询不是SQL查询。
如果你的班级是这样的
class Admin{
String loginAdmin;
String passwordAdmin;
}
将SQL查询更改为HQL,如下所示
Admin admin=(Admin) session.createQuery
(from Admin where loginAdmin='"+login+"' and passwordAdmin='"+password+"').uniqueResult();
您可以参考uniqueResult()方法here
答案 1 :(得分:0)
为了调用sql查询调用 session.createSQLQuery(这里是sql查询); 所以你的代码是错误的。
为了调用HQL查询,请调用:
session.createQuery("from Admin where loginAdmin='"+login+"' and passwordAdmin='"+password+"'");
这假设该类是Admin,其属性为login和password
答案 2 :(得分:0)
使用以下代码:
Query query = session.createQuery("from Admin where loginAdmin= :login and password = :passwordAdmin");
query.setParameter("login", login);
query.setParameter("password", password );
Admin admin = (Admin)query.uniqueResult();
通过连接字符串来创建HQL查询(或任何其他类型的数据库查询)是一个坏主意,因为这样你就可以打开系统进行SQL注入了!