博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA使用原生SQL查询
阅读量:6304 次
发布时间:2019-06-22

本文共 3291 字,大约阅读时间需要 10 分钟。

hot3.png

一、Spring3.1之前版本的方法 

import org.springframework.context.ApplicationContext;import org.springframework.orm.jpa.support.JpaDaoSupport;import java.util.*;import javax.persistence.*;public class CustomerCourseDAO extends JpaDaoSupport implements ICustomerCourseDAO {public String findTeacherNameByCourseId(Integer courseid) {        String sql = "select concat(c.Given_Name,' ',c.Family_Name) as teachername from customer c,customer_course cc"                + " where c.Customer_ID = cc.Customer_ID and cc.Related_Code = 2 and  cc.Course_ID = " + courseid.intValue();        try {            EntityManagerFactory emf = getJpaTemplate().getEntityManagerFactory();            EntityManager newEm = emf.createEntityManager();            EntityTransaction newTx = newEm.getTransaction();            newTx.begin();            List result = newEm.createNativeQuery(sql).getResultList();            String teachername = "";            if(result.size()==1){                teachername = (String)result.get(0);            }            newEm.getDelegate();            newTx.commit();            newEm.close();            emf.close();                       return teachername;        } catch (RuntimeException re) {            logger.error("find Teacher's Name by courseId failed", re);            throw re;        }    }     //add by edwin, 2007-11-08 测试通过    @SuppressWarnings(value = "unchecked")    public List
findTeaStuByCourseId(Integer id) { String sql = "select model.* from customer_course model " + "where model.Related_Code = 1 and model.Course_ID = " + id.intValue(); try { EntityManagerFactory emf = getJpaTemplate().getEntityManagerFactory(); EntityManager newEm = emf.createEntityManager(); EntityTransaction newTx = newEm.getTransaction(); newTx.begin(); @SuppressWarnings(value = "unchecked") List
stu = newEm.createNativeQuery(sql,CustomerCourse.class).getResultList(); newTx.commit(); newEm.close(); emf.close(); return stu; } catch (RuntimeException re) { logger.error("find Teacher's students by courseId failed", re); throw re; } }}

二、Spring 3.1之后版本方法

1、在spring配置文件中配置entityManagerFactory

false
update
org.hibernate.dialect.MySQL5InnoDBDialect

2、以下测试方法测试通过

@Override	@SuppressWarnings("unchecked")	public List
findByTaskName(String name) { EntityManagerFactory emf= (EntityManagerFactory) SpringUtils.getBean("entityManagerFactory"); //SpringUtils需要自己指定了.... EntityManager em=emf.createEntityManager(); String querysql="select * from prism_task where taskname=?"; Query query=em.createNativeQuery(querysql); query.setParameter(1, name); List
tasklist=(List
)query.getResultList(); em.close(); return tasklist; }

 

转载于:https://my.oschina.net/u/2391658/blog/862732

你可能感兴趣的文章
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>
在Mac 系统下进行文件的显示和隐藏
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
读书笔记《乌合之众》
查看>>