我Spring+JPA在非java web 情况下,运行出错了。错误信息是: javax.persistence.TransactionRequiredException: Executing an update/delete query。网上我查了很久,大概就是说没事务吧。但是我数据库不一定非要事务啊。Hibernate+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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <context:component-scan base-package="org.xgj.sshtest" /> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="sshtest_unit"> </property> </bean> </beans>
下面是JPA的配置文件:
<?xml version="1.0" encoding="UTF-8"?> <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"> <persistence-unit name="sshtest_unit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>org.xgj.sshtest.BaseEntity</class> <class>org.xgj.sshtest.entity.UserEntity</class> <class>org.xgj.sshtest.entity.PropertyEntity</class> <!-- 属性配置 --> <properties> <!-- ==============Hibernate 连接设置================= --> <!-- 方言 --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <!-- org.hibernate.dialect.SQLServerDialect --> <!-- org.hibernate.dialect.MySQLDialect --> <!-- org.hibernate.dialect.Oracle10gDialect --> <!-- 驱动类 --> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <!-- net.sourceforge.jtds.jdbc.Driver --> <!-- oracle.jdbc.driver.OracleDriver --> <!-- com.mysql.jdbc.Driver --> <!-- URL地址 --> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sshtest?useUnicode=true&characterEncoding=UTF-8" /> <!-- jdbc:jtds:sqlserver://localhost:1433/sshtest; --> <!-- oracle jdbc:oracle:thin:@localhost:1521:sshtest --> <!-- mysql jdbc:mysql://localhost:3306/sshtest?useOldAliasMetadataBehavior=true --> <!-- 用户名 --> <property name="hibernate.connection.username" value="root" /> <!-- 密码 --> <property name="hibernate.connection.password" value="123456" /> <!-- 连接的字符编码 --> <property name="hibernate.connection.charSet" value="UTF-8" /> <property name="hibernate.connection.characterEncoding" value="UTF-8" /> <!-- ==============Hibernate 附加设置================= --> <!-- create 删除以前的,从新建. create-drop 根据model类生成表,但是sessionFactory一关闭,表就自动删除 . update 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行 validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值 --> <!-- <property name="hibernate.hbm2ddl.auto" value="update" /> --> <!-- 在控制台打印SQL语句 --> <property name="hibernate.show_sql" value="true" /> <!-- 格式化 SQL语句--> <property name="hibernate.format_sql" value="true" /> <!-- Hiberante将为SQL产生注释,这样更利于调试--> <property name="hibernate.use_sql_comments" value="true" /> <!-- ==============Hibernate C3P0设置================= --> <!-- c3p0连接提供器 --> <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" /> <!-- 最小连接数 --> <property name="c3p0.min_size" value="5" /> <!-- 最大连接数 --> <property name="c3p0.max_size" value="30" /> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --> <property name="c3p0.maxIdleTime" value="60" /> <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 --> <property name="c3p0.timeout" value="1800" /> <!-- 最大的PreparedStatement的数量 --> <property name="c3p0.max_statements" value="50" /> <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒--> <property name="c3p0.idle_test_period" value="120" /> <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 --> <property name="c3p0.acquire_increment" value="1" /> <!-- 是否每次都验证连接是否可用 --> <property name="c3p0.validate" value="false" /> </properties> </persistence-unit> </persistence>
然后是JAVA 代码:
public class Test { /** * @param args */ public static void main(String[] args) { String[] configs = { "spring-dao.xml", "spring-scan.xml" }; ApplicationContext ctx = new ClassPathXmlApplicationContext(configs); UserDAO userDAO = (UserDAO) ctx.getBean("userDAO"); try { UserEntity userEntity= userDAO.get(1L); //这里没问题 System.out.println(userEntity.getUsername()); userDAO.getEntityManager().createQuery("delete from UserEntity").executeUpdate(); //这里出问题了 } catch (SQLException e) { e.printStackTrace(); } } }
userDAO其实里面就封装了一个EntityManager。这样注入EntityManager到UserDAO的
/** * JPA实体管理器 */ @PersistenceContext private EntityManager em;
我的问题是上面为什么出现 javax.persistence.TransactionRequiredException: Executing an update/delete query 异常呢?我TMD不用事务不行么?纯的hibernate就没这个问题。。 大家帮一下
相关推荐
在学习jpa时候做的一个struts2+spring+jpa整合的完整例子 包含分页,一个简单的 资产入库系统 并实现了登陆等。
在Spring+Jersey+JPA+Hibernate的组合中,Hibernate作为JPA的具体实现,负责与MySQL数据库之间的交互。 MySQL是一种广泛使用的开源关系型数据库管理系统,因其高性能、可靠性和易于管理而在Web应用中受到青睐。在这...
**基于Struts 2 + Spring + JPA框架的WEB应用详解** 在现代的Java Web开发中,使用MVC(Model-View-Controller)设计模式已经成为主流。Struts 2、Spring和Java Persistence API (JPA) 是三个强大的开源框架,它们...
**Spring+Struts2+JPA 整合详解** 在Java Web开发中,Spring、Struts2和JPA是三个非常重要的框架。Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个强大的MVC框架...
SpringMVC+Spring+JPA+LayUI+JSP学生选课系统 本项目为计算机学生选课系统,可作为期末作品,供参考 项目技术: SpringMVC Spring SpringDataJPA LayUI JSP MySQL5.7
在这个"Struts2.2.3+Spring3.0.5+JPA2.0"的例子中,我们将深入探讨这三个框架的集成与应用。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它极大地简化了Java Servlet和JSP的开发...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...
在IT领域,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+jpa+hibernate框架整合"就是一个常见的解决方案。这个整合涉及到四个关键的技术栈:Spring框架、SpringMVC、JPA(Java Persistence API)...
在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...
spring+jpa的applicationContext.xml配置
持久层框架:Spring boot Jpa 安全框架:Spring Security 缓存框架:Redis 日志打印:logback+log4jdbc 接口文档 swagger2 其他:fastjson,aop,MapStruct等。 页面框架:Vue 前端源码:eladmin-qt 后端源码:el...
SpringMVC+Spring+JPA+Maven框架搭建 SpringMVC+Spring+JPA+Maven框架的搭建涉及到一系列的技术组件,其中SpringMVC是Spring框架的一个模块,用于构建Web应用,提供MVC架构;Spring框架是一套全面的企业级应用开发...
Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...
### JSF + Spring + JPA 组合应用详解 #### 一、概述 随着Web应用程序的需求不断增长,开发者面临着越来越复杂的挑战。为了更好地管理和优化Web应用程序的开发过程,出现了多种框架和技术栈。其中,“JSF + Spring...
该项目是基于SpringBoot + Vue +JPA 的实验室助理信息管理系统-可用于大学生日常课设 功能点描述: (1)学生 学生注册为系统用户、系统用户报名助理岗位、 (2)实验室技术员 筛选报名信息、实验室助理招聘计划的...
【Struct + Spring + JPA】是企业级应用开发中常用的技术栈组合,分别代表了三个重要的组件:Struts(一个MVC框架),Spring(一个全面的企业级应用框架),以及JPA(Java Persistence API,Java持久化API)。...
"Struts+Spring+Jpa(hibernate)整合"这个主题意味着我们要将这三个框架进行集成,以实现更强大的功能。在实际项目中,这种整合能够帮助开发者更好地管理业务逻辑、持久化数据以及处理用户请求。 1. **Struts**:...
本项目结合了SpringBoot、SpringSecurity以及JPA(Java Persistence API),实现了用户角色权限的登录认证功能。以下是关于这些技术及实现过程的详细讲解。 1. **SpringBoot**:SpringBoot简化了Spring应用的初始...
Spring Struct和JPA是两个在Java开发中广泛使用的框架,它们在构建现代企业级应用程序时起着关键作用。Spring Struct是Spring框架的一部分,主要用于Web应用的结构化和组织,而JPA(Java Persistence API)是Java...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、...基于LayUI+Spring Boot+MySQL+JPA+Shiro的科研信息管理系统源码+项目说明+数据库.zip