无法从无处构建Hibernate SessionFactory异常

时间:2016-11-26 12:37:39

标签: java hibernate jpa exception

每次我想部署我的应用程序时,都会出现一个奇怪的错误。 我使用的是IntelliJ IDEA 2016.3。

我的应用程序是使用JSF,EJB和JPA(Hibernate)的Java WEB应用程序。所有的库都是由IDEA下载的(在这个项目中没有Maven),所有依赖项都附带.war文件。我在Windows 10上部署到TomEE 7.0.2。

以下是部署中涉及的配置文件:resources.xml

  .directive('animateFromLeft', function($compile) {
      return {
        restrict: 'AE',
        link: function(scope, elem, attr) {
          var children = elem.children();
          children.addClass('animated fadeInLeft');

          var animationDelay = 0;
          for(var i = 0; i < children.length; i++) {
            children[i].style.animationDelay = animationDelay.toString() + 's';
            animationDelay += 1;
          }

          $compile(elem)(scope);
        }
      };
    });

的persistence.xml

<div class="content-here">
      <div class="animated fadeInLeft" style="animation-delay: 0s">1</div>
      <div class="animated fadeInLeft" style="animation-delay: 1s">2</div>
      <img class="animated fadeInLeft" style="animation-delay: 2s" width="100px" src="https://staticdelivery.nexusmods.com/mods/110/images/74627-0-1459502036.jpg" />
      <div class="animated fadeInLeft" style="animation-delay: 3s">3</div>
      <div class="animated fadeInLeft" style="animation-delay: 4s">4</div>
    </div>

我的堆栈跟踪:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <Resource id="my_internet_shop_db" type="javax.sql.DataSource">
        JdbcDriver  com.mysql.jdbc.Driver
        JdbcUrl jdbc:mysql://localhost:3306/my_internet_shop?autoReconnect=true&amp;useSSL=true
        UserName root
        Password alpine
        validationQuery = SELECT 1
        JtaManaged true
    </Resource>
</resources>

这只是提到例外的一小部分。以下是full stacktrace & server logs

所有数据库内容和JPA映射都可以。经过双重检查,精致至完美。事实上,我能够在Tomcat 8.5.6服务器上运行我的应用程序,但它不支持EJB,所以我需要TomEE。

此处的根删除是<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name="my_internet_shop" transaction-type="JTA"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <jta-data-source>my_internet_shop_db</jta-data-source> <class>Objects.Order.CartEntity</class> <class>Objects.User.ContactEntity</class> <class>Objects.Order.OrderEntity</class> <class>Objects.Product.ProductEntity</class> <class>Objects.Section.SectionEntity</class> <class>Objects.Service.ServiceEntity</class> <class>Objects.User.UserEntity</class> <properties> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/my_internet_shop"/> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> <property name="hibernate.connection.username" value="root"/> <property name="hibernate.connection.password" value="alpine"/> <property name="hibernate.archive.autodetection" value="class"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence> 。它出现在我的所有Hibernate-JPA项目中(即使是只有一个实体且没有错误空间的简单测试),所以我认为这是真正的服务器端配置问题。

然而,我无法在StackOverflow或互联网上找到任何有关此例外的线索。

我期待着你的帮助,很乐意得到任何帮助和建议。

1 个答案:

答案 0 :(得分:9)

您可以添加persistence.xml

<property name="tomee.jpa.factory.lazy" value="true" />

<property name="tomee.jpa.cdi" value="false" />

如果您不需要CDI / JPA集成

编辑:第一个将在运行时首次使用工厂创建工厂,第二个将禁用cdi。这两项工作都会导致您在启动期间初始化JPA时不需要CDI(在启动cdi之前创建工厂因为cdi可以依赖它 - 鸡蛋问题)