【问题标题】:javax.persistence.PersistenceException: org.hibernate.HibernateException: Provider is closedjavax.persistence.PersistenceException:org.hibernate.HibernateException:提供程序已关闭
【发布时间】:2017-05-29 09:41:42
【问题描述】:

我正在开发一个网络应用程序。 WildFly 8.1、SQL Server 2012 我在本地环境中遇到问题,即使数据库的代码和状态与预生产相同,但一切正常。

1) 我刚刚从预生产数据库恢复了我的数据库,所以数据库是相同的。

2) 我检查了预生产中使用的相同变更集。所以代码是一样的。

有一个功能可以让我对数据库进行本机 SQL 查询。

select IIF(number.accountnumber is not null,number.accountnumber,def.accountnumber)
from salesaccountnumber def 
left join salesaccountnumber number on 
  number.fk_service = def.fk_service 
and number.pricetitle= 'STARTINGPRICE'
where def.pricetitle = 'STARTINGPRICE' 
and def.fk_service = 2

当我在 SQL Management Studio 中执行上面提到的查询时,它工作得很好。

在所有其他开发人员的环境和预生产环境中,它都按预期工作,但在我的开发环境中,数据库的代码和状态与其预生产等效项相同,当从该查询中获取单个结果时,我得到以下异常:

12:16:44,934 ERROR [my.project.BillingAction] (default task-59) [SESSION=Gvo7TGbOw4nIPo6p_WphSUrn]Could not build/send INVOICE out of bill : javax.persistence.PersistenceException: org.hibernate.HibernateException: Provider is closed!
12:16:44,935 ERROR [stderr] (default task-59) javax.persistence.PersistenceException: org.hibernate.HibernateException: Provider is closed!

与预生产相比,我在本地环境中没有其他问题。

我们之前没有人见过这个异常,所以,有什么想法可以从哪里开始寻找解释?

【问题讨论】:

  • 从异常看来,hibernate 无法获得与数据库的连接。
  • @coolgirl,这很奇怪,因为数据库连接在应用程序的其他任何地方都没有问题。
  • 如果您使用 EJB,您的 persistence.xml 文件中是否有此内容?它应该完全在一行<provider>org.hibernate.ejb.HibernatePersistence</provider>
  • 我会试试的。我在 persistence.xml 中没有该行,但该文件在存储库中,其他开发人员没有这个问题。

标签: java sql-server hibernate persistence wildfly-8


【解决方案1】:

我不得不将 JRebel IntelliJ IDEA 插件更新到最新的 7.0.9 版本,这解决了问题。所以这毕竟是 JRebel 中的一个错误。

【讨论】:

  • 有时 JRebel 不会像 jar 一样接受新的更改。因此,当您从 svn 获取 git pull/checkout 代码时,大多数情况下都需要构建。此外,如果可能,您可以尝试重新启动服务器,可能是连接超时也是导致上述错误的原因。还要继续发布您的发现,以便我知道发生了什么。谢谢! :)
  • @coolgirl,嘿,我联系了 JRebel 的作者,他们要求我更新插件,我这样做了,现在它可以工作了!
  • 很高兴听到这个消息! :-)
猜你喜欢
  • 2011-01-07
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多