hibernate执行原生sql的方式详解

KLQ 2020-07-24 11:23:56 java常见问答 5890

下面要给大家分享的是hibernate执行原生sql的几种方式,一起通过以下实例来了解以下吧!

java代码:

import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.dto.Role;
public class HibernateTest1
{
    public static void main(String[] args)
    {
        SessionFactory sf = new Configuration()
            .configure()
            .buildSessionFactory();
        Session s = null;
        Transaction t = null;
        try
        {
            s = sf.openSession();
            t = s.beginTransaction();
            String sql = "SELECT id,rolename,createtime FROM sys_role";
            SQLQuery query = s.createSQLQuery(sql);
            //方式1 error
            //	            List<Object[]> list = query.list();  
            //方式2
            //	            query.addScalar("id",Hibernate.INTEGER); 
            //	            query.addScalar("rolename",Hibernate.STRING); 
            //	            query.addScalar("createtime",Hibernate.DATE); 
            //	            List<Object[]> list = query.list(); 
            //方式3 需要对应映射的实体
            query.addEntity(Role.class);
            List < Role > list = query.list();
            //方式4 需要hibernate版本> hibernate3.2
            //	            query.addScalar("id",Hibernate.INTEGER); 
            //	            query.addScalar("rolename",Hibernate.STRING); 
            //	            query.addScalar("createtime",Hibernate.DATE);
            //	            query.setResultTransformer(Transformers.aliasToBean(Role.class)); 
            //	            List<Role[]> list = query.list(); 
            t.commit();
        }
        catch (Exception err)
        {
            t.rollback();
            err.printStackTrace();
        }
        finally
        {
            s.close();
        }
    }
}

以上内容源于网络,希望可以对你有所帮助。

你还想了解更多的java程序代码例子吗?可以继续通过奇Q工具网来进行了解呢。

推荐阅读:

Hibernate使用原生sql语句例子

hibernate与jdbc的联系有哪些?

hibernate与mybatis区别在哪?都有哪些优缺点?