pojo类:Stuinfo.java
package com.lz.pojo;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 * Stuinfo entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name="stuinfo"
    ,catalog="student"
)public class Stuinfo  implements java.io.Serializable {
    // Fields         private Integer id;
     private String stuid;
     private String sname;
     private String sarea;
    // Constructors    /** default constructor */
    public Stuinfo() {
    }    
    /** full constructor */
    public Stuinfo(String stuid, String sname, String sarea) {
        this.stuid = stuid;
        this.sname = sname;
        this.sarea = sarea;
    }   
    // Property accessors
    @Id @GeneratedValue(strategy=IDENTITY)
    
    @Column(name="id", unique=true, nullable=false)    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    @Column(name="stuid", nullable=false, length=12)    public String getStuid() {
        return this.stuid;
    }
    
    public void setStuid(String stuid) {
        this.stuid = stuid;
    }
    
    @Column(name="sname", nullable=false, length=10)    public String getSname() {
        return this.sname;
    }
    
    public void setSname(String sname) {
        this.sname = sname;
    }
    
    @Column(name="sarea", nullable=false, length=10)    public String getSarea() {
        return this.sarea;
    }
    
    public void setSarea(String sarea) {
        this.sarea = sarea;
    }}DAO接口:IStuDAO.javapackage com.lz.dao;import java.util.List;public interface IStuDAO {

public List findstu();}实现类接口:StuDAOImpl.javapackage com.lz.dao.impl;import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import javax.persistence.PersistenceUnit;
import javax.persistence.Query;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.InstantiationStrategy;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.orm.jpa.JpaCallback;
import org.springframework.orm.jpa.support.JpaDaoSupport;import com.lz.dao.IStuDAO;public class StuDAOImpl extends JpaDaoSupport implements IStuDAO{ @SuppressWarnings("unchecked" )
public List findstu() {

EntityManagerFactory factory = Persistence.createEntityManagerFactory("springMVC"); 
EntityManager em = factory.createEntityManager(); 

em.getTransaction().begin();// 开启事务 

// @PersistenceContext EntityManager em;

final String HQL = "select s.stuid,s.sname,s.sarea from Stuinfo s";
Query query = em.createQuery(HQL);
List list = query.getResultList();

return /*(List)getJpaTemplate().execute(new JpaCallback() {
public List doInJpa(EntityManager em) throws PersistenceException{
Query query = em.createQuery(HQL);
List list = query.getResultList();
return list;
}
});*/
list;
}}控制类:StuCtrl .javapackage com.lz.ctrl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import com.lz.dao.impl.StuDAOImpl;@Controller
public class StuCtrl {

@Autowired
private StuDAOImpl stuDAO;

public void setDAO(StuDAOImpl stuDAO){
this.stuDAO = stuDAO;
}

@RequestMapping("/findStu.do")
public String findStu(Model model){
List list = stuDAO.findstu();
System.out.println("进入控制器,查出的记录数为:"+list.size());
model.addAttribute("stuList",list);

return "springmvc";
}}JPA配置文件:persistence.xml<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="springMVC"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.lz.pojo.Stuinfo</class>

<!-- 是否显示生成的SQL语句 -->
<properties>
<property name="hibernate.show_sql" value="true" />
</properties>

</persistence-unit>
</persistence>Spring配置文件:applicationContext.xml<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx.xsd" 
xmlns:tx="http://www.springframework.org/schema/tx"> <!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"> </property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/student?useUnicoode=true&amp;characterEncoding=utf8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>

<!-- Hibernate配置 -->  
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
    <property name="dataSource" ref="dataSource" />  
    <property name="namingStrategy">  
        <bean class="org.hibernate.cfg.ImprovedNamingStrategy" />  
    </property>  
    <property name="hibernateProperties">  
        <props>  
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>  
        </props>  
    </property>  
    <property name="packagesToScan" value="org.javaee.base.entity" />  
</bean>  
 
<!-- 实体管理器:注入到dao类里面去管理实体,提供JPA、Hibernate提供的接口 -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="persistenceUnitName" value="springMVC" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>

<bean id="stuDAO" class="com.lz.dao.impl.StuDAOImpl">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />


</beans>

解决方案 »

  1.   

    产生如下异常:严重: Servlet.service() for servlet annomvc threw exception
    org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection avalable
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:107)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2119)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2115)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1339)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
    at com.lz.dao.impl.StuDAOImpl.findstu(StuDAOImpl.java:35)
    at com.lz.ctrl.StuCtrl.findStu(StuCtrl.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
    dubug的时候发现 EntityManager 对象为null~求各路大侠指点迷津~
      

  2.   

    将new Configuration().buildSessionFactory() 改为new Configuration().configure().buildSessionFactory()  试试
      

  3.   


       <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
                    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
                    <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>  这段代码应该配置在persistence.xml中,否则,它无法识别是使用hibernate还是JPA
      

  4.   

    还是不行噢,我是想这样做的,Spring+SpringMVC+JPA+Hibernate整合起来,现在得不到那个EntityManager对象~纠结了好几天了~一直无果,请赐教啊,感激~