当前位置: 首页 > 面试题库 >

TransactionRequiredException执行更新/删除查询

盖辉
2023-03-14
问题内容

我在Spring和mongodb中使用了hibernate JPA,并且我在Glassfish-4.0上运行我的应用程序

我的服务类别是:

@Component
public class Test {
    @PersistenceContext
    EntityManager em;
    EntityManagerFactory emf;

    @Transactional
    public String persist(Details details) {
        details.getUsername();
        details.getPassword();

        Query query = em.createNativeQuery("db.details.find(username="+details.getUsername()+"&password="+details.getPassword());

        em.getTransaction().begin();
        em.persist(details);
        em.getTransaction().commit();
        em.flush();
        em.clear();
        em.close();
        query.executeUpdate();
        System.out.println("Sucessful!");
        return "persist";        
    }
}

我的spring-context.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    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-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="com.javapapers.spring.mvc" />
    <context:annotation-config />
    <mvc:annotation-driven />
    <tx:annotation-driven transaction-manager="txManager" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="ogmTest"/>
    </bean>
    <bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    </bean>
</beans>

我在代码中应用了一些更改,但是它们没有效果。谁能帮我解决这个问题。提前致谢。


问题答案:

我不确定这是否会帮助你解决问题(即是否仍然存在),但是,在网上搜索类似问题之后。

我从持久性EntityManager创建本机查询以执行更新。

Query query = entityManager.createNativeQuery(queryString);

我收到以下错误:

引起原因:javax.persistence.TransactionRequiredException:执行更新/删除查询

许多解决方案建议在你的方法中添加@Transactional。只是这样做并没有改变错误。

一些解决方案建议向EntityManager索要a,EntityTransaction以便你可以调用begin并提交自己。这引发了另一个错误:

引起原因:java.lang.IllegalStateException:不允许在共享的EntityManager上创建事务-使用Spring事务或EJB CMT代替

然后,我尝试了一种方法,大多数网站都说这种方法是用于应用程序管理的实体管理器,而不是容器管理的(我相信Spring是这样),那就是joinTransaction()

@Transactional装饰方法,然后调用joinTransaction()调用EntityManager对象的前夕query.executeUpdate(),我的本地查询更新工作。

我希望这可以帮助其他遇到此问题的人。



 类似资料:
  • 关于这个问题有好几篇帖子,但仍然没有找到答案。这是父类Userr。在@OneToMany关系中,我想删除一个特定的子帐户。 现在,当我通过“删除”查询执行此操作时,我得到以下异常。 组织。springframework。刀。InvalidDataAccessApiUsageException:执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredExceptio

  • 我正在尝试使用query-更新行(删除列str_column中的连字符和连字符后的所有字符)- 但上面的查询是删除匹配的行而不是更新。 我不明白,如何更新查询可以删除行??

  • 我正在尝试更新JTable(或data?)的行在我对一行执行删除操作后,当选择另一行时,可以编辑所选行。当前删除该行将使已删除行下方的行上移,但如果选择了该行号并尝试进行编辑,则会返回(JOptionPane),就像未选择任何内容一样。它似乎没有“刷新”数据(?)。 这是一个SCCE,希望有人可以运行它并指出问题。我试着尽可能地缩小它,以便于复制/粘贴: 我在这里看到这个问题的各种形式都有一些不同

  • 问题内容: 我有一个简单的问题:假设有一个查询如下的站点: 。 有什么办法可以在数据库(MySQL)中更新/删除某些内容?到现在为止,我还从未见过能够使用 SELECT查询 删除/更新的注入,所以,甚至有可能吗? 问题答案: 如果您说使用了不支持多个查询的内容,则不能直接添加/ / ,但是在某些情况下可以修改数据。例如,假设您具有以下功能 现在您可以在以下位置调用此函数: (--始终为NULL(F

  • 插入、更新和删除语句基于以开头的层次结构生成 UpdateBase . 这个 Insert 和 Update 构建基于中介的 ValuesBase . DML基础构造函数 顶级的“插入”、“更新”、“删除”构造函数。 Object Name Description delete(table[, whereclause, bind, returning, ...], **dialect_kw) 构建

  • 我有父实体和一个方向作为具有关系的子实体。我尝试使用Hibernate查询删除超过一周的广告,但得到的结果是: com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityConstraintViolationException:无法删除或更新父行:外键约束失败(.,constraint外键()引用() 用户: 筛选器: 广告: DAO删除方法: