jpa - OpenJPA 报告没有注释 @Transactional 的方法内的当前事务
问题描述
我有一个以前从未遇到过的非常奇怪的问题。我在 JSF 中有一些方法标记为@Transactional
. 但是当我在下面的示例中调用 fileDb.flush() 函数时
@Transactional
public String toggleHide() {
fileBean.setFile(fileDb.updateFile(fileBean.getFile()));
if (getEvent().getSubType().equals("note")) {
// note
for (Note note : fileBean.getFile().getNotes()) {
if (note.getId() == getEvent().getEventId()) {
note.setHide(opposite(getEvent().isHidden()));
fileDb.flush();
break;
}
}
}
}
我收到以下错误
<openjpa-2.4.3-r422266:1833086 nonfatal user error> org.apache.openjpa.persistence.TransactionRequiredException: Can only perform operation while a transaction is active.
at org.apache.openjpa.kernel.BrokerImpl.assertActiveTransaction(BrokerImpl.java:4729)
at org.apache.openjpa.kernel.DelegatingBroker.assertActiveTransaction(DelegatingBroker.java:1385)
at org.apache.openjpa.persistence.EntityManagerImpl.flush(EntityManagerImpl.java:663)
at org.apache.webbeans.custom.persistence.EntityManager$$OwbNormalScopeProxy0.flush(javax/persistence/EntityManager.java)
at uk.me.kissy.database.db.file.FileDb.flush(FileDb.java:379)
at uk.me.kissy.database.db.file.FileDb$$OwbNormalScopeProxy0.flush(uk/me/kissy/database/db/file/FileDb.java)
at uk.me.kissy.file.beans.EventsBean.toggleHide(EventsBean.java:117)
有没有办法检查当前交易的状态?
解决方案
推荐阅读
- python - 在模板中的 href 标记内使用 django 模型的字段值
- ios - 在 iOS 反应原生项目上出现奇怪的错误
- database - 使用 Datatable 加快记录加载时间 laravel
- laravel - Laravel Cashier 通过订阅创建更多关系
- ios - SWIFT:在 TVOS 中退出收集时强制焦点引擎转到按钮
- docker - 如何构建和推送 Docker 镜像?
- javascript - 使用 JsPdf AutoTable 在“d”和其他字符上设置换行符时出现问题
- native-file-system-api-js - 使用 FileSystemFileHandle 在 Chrome 中跨页面重新加载时保持文件描述符
- sql - 在 Postgresql 中为每个被拒绝或接受的日期查找第一个 OPENED_DATE
- java - Java Hashtable 如何根据 hashcode 计算元素的放置位置?