- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Spring/Hibernate/Vaadin 应用程序,尽管进行了大量研究,但我仍然无法解决一个问题。我的应用程序分为四层:模型 <-> 存储库 <-> 服务 <-> View
当我使用笔记本电脑时,尝试显示应用程序的 View 时没有任何问题。但是,当我将应用程序放在预生产服务器上时,人们尝试访问进行测试,并且 Tomcat 日志中出现以下错误:
Caused by: org.springframework.orm.jpa.JpaSystemException: org.hibernate.TransactionException: Already have an associated managed connection; nested exception is javax.persistence.PersistenceException: org.hibernate.TransactionException: Already have an associated managed connection
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:311)
at org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect.ajc$afterThrowing$org_springframework_orm_jpa_aspectj_JpaExceptionTranslatorAspect$1$18a1ac9(JpaExceptionTranslatorAspect.aj:15)
at com.code.repositories.jpa.SuperRepository.findAll(SuperRepository.java:99)
at com.code.service.ActorService.findAllAddressTypes(ActorService.java:103)
at com.code.views.vaadin.views.contact.AddressTypeView.buildLayout(AddressTypeView.java:50)
at com.code.views.vaadin.layout.objects.CodeView.<init>(CodeView.java:29)
at com.code.views.vaadin.views.AbstractEntityView.<init>(AbstractEntityView.java:25)
at com.code.views.vaadin.views.contact.AddressTypeView.<init>(AddressTypeView.java:31)
... 65 more
Caused by: javax.persistence.PersistenceException: org.hibernate.TransactionException: Already have an associated managed connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1360)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1288)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1370)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.enlistInCurrentTransaction(ExtendedEntityManagerCreator.java:421)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.doJoinTransaction(ExtendedEntityManagerCreator.java:398)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:356)
at $Proxy285.createNamedQuery(Unknown Source)
... 71 more
Caused by: org.hibernate.TransactionException: Already have an associated managed connection
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:65)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1309)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:57)
我认为问题来自于不同的用户尝试访问相同的数据,但我不确定。你们中有人遇到过同样的问题吗?
谢谢。
如果您需要更多代码,请不要犹豫。
编辑
是的,我使用 Spring Security,我将存储库注入(inject)到我的服务中。典型的服务方法是:
地址类型 View
@Resource private ActorService actorService;
private BeanItemContainer<AddressType> container;
private EntityList list;
private AddressTypeForm form;
/**
* Build layout
*/
public void buildLayout() {
super.buildLayout();
container = new BeanItemContainer<AddressType>(AddressType.class);
container.addAll(actorService.findAllAddressTypes());
list = new EntityList();
list.addActionHandler(new EntityListActionHandler(this));
list.setContainerDataSource(container);
list.setVisibleColumns(AddressType.TABLE_FIELDS);
list.setColumnHeaders(list.getColumnHeaders());
form = new AddressTypeForm(container);
list.addListener(new ItemClickEvent.ItemClickListener() {
private static final long serialVersionUID = 1L;
@Override
public void itemClick(ItemClickEvent event) {
AddressType selected = (AddressType) event.getItemId();
form.setItemDataSource(new BeanItem<AddressType>(selected));
form.setImmediate(true);
}
});
VerticalSplitPanel panel = new VerticalSplitPanel();
panel.setFirstComponent(list);
panel.setSecondComponent(form);
getVerticalLayout().addComponent(toolBar);
getVerticalLayout().addComponent(panel);
getVerticalLayout().setExpandRatio(panel, 1);
}
Actor 服务
/**
* Find all address types
* @return
*/
public List<AddressType> findAllAddressTypes() {
return addressTypeRepository.findAll();
}
地址类型存储库
@SuppressWarnings("unchecked")
@Override
@Transactional
public List<T> findAll() {
Query query = this.entityManager.createNamedQuery(this.entityClass.getSimpleName() + ".findAll");
return query.getResultList();
}
最佳答案
问题出在 @PersistenceContext 注释中。我有:
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
我将其替换为:
@PersistenceContext(type = PersistenceContextType.TRANSACTION)
private EntityManager entityManager;
关于Spring、Hibernate - TransactionException : Already have an associated managed connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9787217/
以下使用Spring Boot,Hibernate,JpaRepository,CockroachDB和Kotlin的最小CRUD示例生成org.springframework.orm.jpa.Jpa
对有点误导性的标题表示歉意。 我有一个 device-id 应用程序,它基本上保存发送到系统的任何新 deviceId 或根据请求返回任何 deviceId 的详细信息. 这个问题不是很常见,但它确实
我是hibernate的初学者。当我试图将对象保存到表不存在的数据库中时。我遇到了一个异常(exception) org.hibernate.TransactionException:在 org.rk
我正在开发一个 Spring/Hibernate/Vaadin 应用程序,尽管进行了大量研究,但我仍然无法解决一个问题。我的应用程序分为四层:模型 存储库 服务 View 当我使用笔记本电脑时,
我将 spring 与 hibernate 和我的 sql 一起使用。我得到这个异常(exception) at org.hibernate.transaction.JDBCTransaction.b
(对 Spring 还是有点陌生) 我需要一个服务方法,它同时是 @Scheduled 和 @Transactional,这样我就可以在其中调用 DAO。 声明式事务已启用,事务管理器是一个基于
感谢您的回复:)我的Web应用程序配置如grails 2.4.4版本,hibernate 4.3.6最终版本以及spring-core-4.0.7.RELEASE。 我表现得像 Session ses
我正在编写我的第一个使用 Hibernate Framework 插入记录的示例。 首先,我尝试按照 URL 给出的说明进行操作 你可以在 GIT Hibernate Basic 查看我的代码 当调用
我们收到错误导致:org.hibernate.TransactionException:JDBC 开始事务失败: 请在下面找到 8820042 WARN o.h.e.jdbc.spi.SqlExce
据我了解,当您尝试在提交前一个事务之前开始一个事务时,会发生此异常。但是,我不明白为什么在我的案例中会出现此异常。 我有一个带有以下 servlet 的网络应用程序: @RestController
我是 Hibernate 的新手。 我尝试编写一个小程序来将数据插入 mysql 数据库服务器。 这是我的程序的源代码: private int insertRelateNew(int newId,
这是我的模型类。这里我们使用 setter 和 getters 方法来初始化变量: package org.koushik.javabrains.dto; import javax.persisten
我正在使用 jersey 和 mysql、hibernate 4 和 c3p0。我创建了一个初始化 servlet,用于配置 hibernate 并将当前 session 上下文类设置为线程。我创建了
运行 removeUserFromConference 方法时出现此异常: 04/06/2012 00:20:48 org.apache.catalina.core.StandardWrapperVa
我已经使用这些技术 + c3p0 构建了一个 Web 服务来进行数据库处理。大多数时候它工作正常,但由于此错误,我有 3-5%(有时甚至 10%)的访问失败。 我以这种方式使用 Hibernate:
我是一名优秀的程序员,十分优秀!