`
gg19861207
  • 浏览: 181776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jpa和spring再整合的时候所遇到的一些问题,异常(终结版!!!)

阅读更多

序:同样的文件(persistence.xml)在不同时期(jpa和spring整合前,后),在不同地点(不同的测试方法中)中的内容是不一样的。

1:时间:jpa未和spring整合之前,地点在下面的测试方法当中:

/**
* jpa未和spring集成整合之前的测试方法,会扫描所有的实体类,,生成所有的数据表(标记为entity的类)
*/
public void test(){
Persistence.createEntityManagerFactory("itcast");
}

persistence.xml文件必须是:

<?xml version="1.0"?>
<persistence 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" version="1.0">
<!-- file:///D:\hibernate\hibernate-entitymanager-3.3.2.CR1\resources\org\hibernate\ejb\persistence_1_0.xsd -->
<persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="123456"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&amp;characterEncoding=UTF-8"/>

<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.jdbc.fetch_size" value="18"/>
<property name="hibernate.jdbc.batch_size" value="10"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="false"/>
</properties>
</persistence-unit>
</persistence>

其中的红色四行是必须有的,否则在运行方法:

public void test(){
Persistence.createEntityManagerFactory("itcast");
}

的时候,就会报

No suitable driver found for jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8的异常

或者是java.lang.UnsupportedOperationException: The user must supply a JDBC connection(根据这四条语句的先后顺序不同,会报不同错误)

/**
* jpa未和spring集成整合之前的测试方法,该方法将生成一条记录

*/public void test1(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.persist(new ProductType());
em.getTransaction().commit();
em.close();
factory.close();
}

2:时间:jpa未和spring整合之后,地点在下面的测试方法当中:

/**
* jpa未和spring集成整合之后的测试方法
*/
public void test2(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ProductTypeService productService = (ProductTypeService)ctx.getBean("productTypeServiceBean");
ProductType type = new ProductType();
type.setName("瑜伽用品");
type.setNote("好产品");
productService.save(type);
}

Juni会报这样的错:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:375)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy17.save(Unknown Source)
at junit.test.ProductTest.test2(ProductTest.java:52)
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 junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:899)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:44)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:330)
... 23 more

而相应的MyEclipse控制台会报这样的错:

java.lang.UnsupportedOperationException: Not supported by BasicDataSource

这是因为在集成完spring以后,beans.xml里有这样的一句话:

<context:property-placeholder location="classpath:jdbc.properties"/>

而jdbc.properties:

driverClassName=org.gjt.mm.mysql.Driver
url=jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8
username=root
password=root

initialSize=1
maxActive=100
maxIdle=8
minIdle=1

而jdbc.properties文件中的红色的4句和persistence.xml文件中的红色的四句是有冲突的,所以才出现了上面的错误,所以把persistence.xml文件中的红色的四句去掉就可以了。

总结:最大的收获就是同样的代码比如说A代码你测验过是好使的,但是假如你又写了代码B,那么即使代码A你从来没修改过,那么A也很有可能因为代码B出现的原因而不能运行了!

分享到:
评论

相关推荐

    Struts2整合Spring、JPA

    至于`lib1`这个文件,可能包含了整合所需的一些依赖库,比如Struts2、Spring和JPA实现的JAR包,以及可能的数据库驱动和其他支持库。确保这些库被正确地添加到项目的类路径中是成功整合的基础。 总的来说,Struts2、...

    Struts2+JPA+Spring整合(PPT)

    在企业级Java开发中,Struts2、JPA(Java Persistence API)和Spring框架的整合是常见的技术栈选择,它们各自扮演着不同的角色,共同构建出强大的MVC(Model-View-Controller)架构应用。Struts2作为表现层框架,...

    SpringData和Spring和JPA的整合

    **SpringData、Spring和JPA整合详解** 在Java企业级开发中,Spring框架因其强大的功能和灵活的架构设计,已经成为主流的开发选择。SpringData和JPA(Java Persistence API)则是Spring框架的重要扩展,用于简化数据...

    Spring Boot整合SpringDataJPA

    本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,实现高效且简洁的数据持久化。 首先,Spring Boot整合Spring Data JPA的基础是引入相关的依赖。在`pom.xml`或`build.gradle`文件中,我们需要添加...

    jpa整合spring源码

    **JPA整合Spring源码详解** 在现代Java开发中,对象关系映射(ORM)框架如Java Persistence API(JPA)和Spring框架的结合使用,极大地简化了数据库操作。本篇将深入探讨JPA与Spring整合的源码实现,帮助开发者理解...

    JPA+Spring完美整合,要的速度了哈!仅分享1个月!

    《JPA与Spring的深度整合:打造高效数据库操作框架》 在现代企业级应用开发中,数据管理是不可或缺的一部分。Java Persistence API(JPA)作为Java平台上的对象关系映射(ORM)标准,使得开发者可以使用面向对象的...

    spring整合jpa mysql

    Spring整合JPA与MySQL是现代Java企业级应用中常见的数据持久化方案,它结合了Spring框架的灵活性和Java Persistence API(JPA)的强大功能,同时利用MySQL作为关系型数据库,提供高效、便捷的数据存储和查询能力。...

    简单的spring整合JPA

    整合Spring和JPA的过程主要包括以下步骤: 1. **依赖配置**:在项目中引入Spring Data JPA和JPA供应商(如Hibernate)的依赖。这通常在Maven或Gradle的配置文件中完成。例如,在Maven的`pom.xml`中,你需要添加如下...

    整合Spring Data JPA1

    Spring Boot 整合 Spring Data JPA** - **环境搭建**:在 Maven 项目中添加相关依赖,包括 `spring-boot-starter-data-jpa`、数据库驱动(如 MySQL)、连接池(如 Druid),以及 Spring Boot 的父依赖 `spring-...

    springMVC、spring、jpa、springData整合

    spring4.1.0已经正式发布了,整合一下使用spring mvc和springData和jpa的使用。 内含有详细的注释解释和完整的JAR包资源,导入工程即可使用,方便学习。

    JPA+Spring+Struts整合实例,JPA+Spring+Struts整合实例

    在Java Web开发领域,JPA(Java Persistence API)、Spring框架和Struts框架的整合是常见的技术栈,它们各自扮演着不同的角色,共同构建出高效、灵活的Web应用程序。下面将详细介绍这三个关键技术及其整合过程。 **...

    Spring Data JPA 笔记

    通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于业务逻辑。本笔记将深入探讨Spring Data JPA的核心概念、功能以及如何在实际项目中应用。 首先,我们需要理解JPA...

    spring整合jpa简单实例

    **Spring 整合 JPA 简单实例** 在现代的Java开发中,Spring框架与JPA(Java Persistence API)的结合使用已经成为了一个常见的实践,它简化了数据库操作,提供了对象关系映射(ORM)的功能。JPA是Java EE的一部分,...

    spring mvc 与JPA/Hibernate的整合示例

    在Java Web开发中,Spring MVC和JPA(Java Persistence API)以及Hibernate作为ORM(对象关系映射)框架的实现,是构建高效、可维护性的应用的常见选择。本示例将探讨如何将这三个组件整合在一起,以实现一个完整的...

    2017 spring data jpa+spring4.2+springmvc+hibernate4.3 maven环境intellij idea增删改查实例

    综上所述,这个实例提供了一个完整的Java Web开发环境,展示了如何使用Spring Data JPA、Spring 4.2、Spring MVC和Hibernate 4.3进行数据操作,以及如何利用Maven进行项目管理,同时借助IntelliJ IDEA提升开发效率。...

    Spring2.5整合JPA

    **Spring 2.5 整合 JPA 概述** Spring 框架以其高度的灵活性和可扩展性,已经成为Java开发中不可或缺的部分。在Spring 2.5版本中,它进一步增强了对Java Persistence API (JPA)的支持,使得开发者能够更加方便地将...

    jpaSpring整合demo

    在这个"jpaSpring整合demo"中,我们看到开发者通过Spring框架来配置和管理JPA,以便更好地处理数据库交互。 **Hibernate**是JPA的一个实现,它是一个强大的ORM框架,能够自动将Java对象转换为SQL语句,反之亦然。在...

    Spring Data JPA API(Spring Data JPA 开发文档).CHM

    Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。

    struts jpa spring 整合(源代码)

    Struts、JPA和Spring是Java开发中三个非常重要的框架,它们各自负责应用程序的不同层面:Struts用于控制层,Spring提供了全面的框架支持,包括依赖注入和面向切面编程,而JPA则是Java持久化规范,用于管理数据库操作...

Global site tag (gtag.js) - Google Analytics