2016-03-24 52 views
2

當我啓動tomcat我得到以下錯誤:PersistenceUnit:默認無法建立Hibernate的SessionFactory - 休眠

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring-context.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:747) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:884) 
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) 
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343) 
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
... 21 more 
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister 
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123) 
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77) 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:344) 
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465) 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:881) 
... 26 more 
Caused by: org.hibernate.InstantiationException: could not instantiate test object : br.gov.sp.saobernardo.sispront.solicitacao.Solicitacao 
at org.hibernate.engine.internal.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:43) 
at org.hibernate.engine.internal.UnsavedValueFactory.getUnsavedIdentifierValue(UnsavedValueFactory.java:68) 
at org.hibernate.tuple.PropertyFactory.buildIdentifierAttribute(PropertyFactory.java:61) 
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:138) 
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:509) 
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96) 
... 30 more 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at org.hibernate.engine.internal.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:40) 
... 40 more 
Caused by: java.lang.NullPointerException 
at br.gov.sp.saobernardo.sispront.solicitacao.Solicitacao.<init>(Solicitacao.java:86) 
... 45 more 

我GOOGLE了在各種論壇和StackOverflow上的錯誤,但我沒有發現任何解決方案,仍然有同樣的錯誤,類Solicitacao.class,pom.xml中,彈簧的context.xml下面,persistence.xml中

package br.gov.sp.saobernardo.sispront.solicitacao; 

import java.util.Calendar; 

import javax.persistence.Entity; 
import javax.persistence.EnumType; 
import javax.persistence.Enumerated; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.PrePersist; 
import javax.persistence.SequenceGenerator; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 
import javax.validation.constraints.NotNull; 

import org.hibernate.validator.constraints.NotBlank; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.format.annotation.DateTimeFormat; 

import br.gov.sp.saobernardo.sispront.usuario.Usuario; 

@Entity 
public class Solicitacao { 

@Id 
@Autowired 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sq_solicitacao") 
@SequenceGenerator(name = "sq_solicitacao", sequenceName = "sq_solicitacao", allocationSize = 1, initialValue = 1) 
private Long id; 

@NotBlank(message = "{solicitacao.cadastro.nome.obrigatorio}") 
private String nome; 

@NotBlank(message = "{solicitacao.cadastro.mae.obrigatorio}") 
private String mae; 

@NotBlank(message = "{solicitacao.cadastro.rg.obrigatorio}") 
private String rg; 

@DateTimeFormat(pattern = "dd/MM/yyyy") 
private Calendar dataNascimento; 

@DateTimeFormat(pattern = "dd/MM/yyyy") 
private Calendar dataAtendimento; 

private String motivo; 

private String horario; 

private String local; 

@NotBlank(message = "{solicitacao.cadastro.telefone.obrigatorio}") 
private String telefone; 

private String celular; 

@NotNull(message = "{solicitacao.cadastro.internacao.obrigatorio}") 
private Boolean internacao; 

private Double dias; 

private String nomeSolicitante; 

private String rgSolicitante; 

private String observacao; 

@Enumerated(EnumType.STRING) 
private Status status; 

@ManyToOne(fetch=FetchType.LAZY) 
@JoinColumn(name="autor_id") 
private Usuario autor; 

private String unidade; 

@Temporal(TemporalType.TIMESTAMP) 
private Calendar data; 

public Solicitacao() { 
    status = Status.Aguardando_Levantamento_de_Ficha; 
    setUnidade(autor.getUnidade()); 
} 

@PrePersist 
void prePersist() { 
    data = Calendar.getInstance(); 
} 
GET's AND SET's 

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>br.gov.sp.saobernardo</groupId> 
<artifactId>sispront</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>SisPRONT</name> 
<url>http://www.saobernardo.sp.gov.br/saude</url> 

<properties> 
    <spring.version>4.1.6.RELEASE</spring.version> 
    <spring-security.version>4.0.1.RELEASE</spring-security.version> 
</properties> 

<dependencies> 
    <!-- Dependências do Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-oxm</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <!-- <dependency> --> 
    <!-- <groupId>org.springframework</groupId> --> 
    <!-- <artifactId>spring-test</artifactId> --> 
    <!-- <version>${spring.version}</version> --> 
    <!-- <scope>test</scope> --> 
    <!-- </dependency> --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${spring-security.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${spring-security.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${spring-security.version}</version> 
    </dependency> 
    <!-- Dependências do Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>5.2.4.Final</version> 
    </dependency> 
    <!-- Dependência do driver JDBC do Oracle --> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>ojdbc14</artifactId> 
     <version>10.2.0.4.0</version> 
    </dependency> 
    <!-- Dependência para upload de arquivos pelo SpringMVC --> 
    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <!-- Dependência de EL para Servlet Container --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- Dependências para envio de email --> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.velocity</groupId> 
     <artifactId>velocity</artifactId> 
     <version>1.7</version> 
    </dependency> 
    <!-- Dependências de log --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.8</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>18.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <!-- Dependências da especificação de Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- <dependency> --> 
    <!-- <groupId>br.gov.sp.saobernardo</groupId> --> 
    <!-- <artifactId>arquivo</artifactId> --> 
    <!-- <version>1.0-SNAPSHOT</version> --> 
    <!-- </dependency> --> 
    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-all</artifactId> 
     <version>1.3</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>1.4.188</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-digester</groupId> 
     <artifactId>commons-digester</artifactId> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.9</version> 
    </dependency> 

</dependencies> 

<build> 
    <finalName>sispront</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

彈簧的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:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:security="http://www.springframework.org/schema/security" 
xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.1.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd 
http://www.springframework.org/schema/jee 
http://www.springframework.org/schema/jee/spring-jee-4.1.xsd 
http://www.springframework.org/schema/security 
http://www.springframework.org/schema/security/spring-security-4.0.xsd"> 

<context:component-scan base-package="br.gov.sp.saobernardo.sispront" /> 

<mvc:annotation-driven /> 

<mvc:default-servlet-handler /> 

<jee:jndi-lookup jndi-name="jdbc/dahue" id="oracleDataSource" /> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="oracleDataSource" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<bean id="messageSource" 
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="useCodeAsDefaultMessage" value="true" /> 
    <property name="basenames"> 
     <list> 
      <value>classpath:ValidationMessages</value> 
     </list> 
    </property> 
    <property name="defaultEncoding" value="ISO-8859-1"></property> 
    <property name="cacheSeconds" value="0" /> 
</bean> 

<tx:annotation-driven /> 

<security:authentication-manager> 
    <security:authentication-provider 
     user-service-ref="usuarioDAO"> 
     <security:password-encoder hash="bcrypt" /> 
    </security:authentication-provider> 
</security:authentication-manager> 

<security:http auto-config="true" use-expressions="true"> 
    <security:intercept-url pattern="https://stackoverflow.com/a/**" 
     access="hasRole('ROLE_LOGADO')" /> 

    <security:form-login login-page="/log-in" 
     always-use-default-target="true" default-target-url="https://stackoverflow.com/a/solicitacao/home" 
     login-processing-url="/log-in" username-parameter="registro" 
     password-parameter="senha" /> 
    <security:logout logout-url="https://stackoverflow.com/a/log-out" 
     logout-success-url="/log-in" delete-cookies="JSESSIONID" 
     invalidate-session="true" /> 
</security:http> 

<security:global-method-security 
    secured-annotations="enabled" /> 

的persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
version="2.0"> 
<persistence-unit name="default"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 

    <class>br.gov.sp.saobernardo.sispront.usuario.Usuario</class> 
    <class>br.gov.sp.saobernardo.sispront.papel.Papel</class> 
    <class>br.gov.sp.saobernardo.sispront.solicitacao.historico.Alteracao</class> 
    <class>br.gov.sp.saobernardo.sispront.solicitacao.Solicitacao</class> 

    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9iDialect" /> 
     <property name="hibernate.show_sql" value="false" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
    </properties> 
</persistence-unit> 

回答

3

autornull在構造。 Hibernate在處理映射時使用Class<?>.createInstance()創建類的臨時對象。在這種情況下,默認的構造函數被調用

public Solicitacao() { 
    status = Status.Aguardando_Levantamento_de_Ficha; 
    setUnidade(autor.getUnidade()); 
} 
+0

Thanks'm開始,仍然不知道解釋日誌錯誤,但僅此而已,謝謝你,你從我的脖子 –

+1

抓住了繩子@ViniciusDuarte歡迎您。始終從堆棧跟蹤結束處開始#引發:java.lang.NullPointerException at br.gov.sp.saobernardo.sispront.solicitacao.Solicitacao。 (Solicitacao.java:86)'。查看具有指定編號的行。 –