2014-01-30 3 views
1

나는 JPA2 + Hibernate 웹 프로젝트를 가지고 있으며, 그것이 지속되는지 테스트하려고한다. java.lang.NullPointerException org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure

package model; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 


@Entity(name="alunos") 
public class Aluno { 
    @Id @GeneratedValue 
    private Long id; 

    private String nome; 


    public void setId(Long id) { 
     this.id = id; 
    } 

    public Long getId() { 
     return id; 
    } 

    public String getNome() { 
     return nome; 
    } 

    public void setNome(String nome) { 
     this.nome = nome; 
    } 
} 

persistence.xml이다 :

import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 

import model.Aluno; 


public class GeraTabelas { 
    public static void main(String[] args) { 
     EntityManagerFactory factory = Persistence.createEntityManagerFactory("PrimeiroProjetoJSF"); 
     EntityManager fac = factory.createEntityManager(); 

     Aluno arthur = new Aluno(); 
     arthur.setNome("Arthur"); 
     fac.persist(arthur); 
     factory.close(); 

    } 
} 

I을 :

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 
    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"> 

    <persistence-unit name="PrimeiroProjetoJSF" transaction-type="RESOURCE_LOCAL"> 

     <class>model.Aluno</class> 

     <properties> 


      <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@------------"/> 
      <property name="javax.persistence.jdbc.user" value="-----"/> 
      <property name="javax.persistence.jdbc.password" value="------"/> 
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/> 

      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.format_sql" value="true" /> 

      <property name="hibernate.hbm2ddl.auto" value="create" /> 

     </properties> 

    </persistence-unit> 

</persistence> 

이 지속성 테스트하는 main() 방법 클래스가

는 실체 실행하면 다음 예외가 throw됩니다.

Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory 
     at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:81) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) 
    at GeraTabelas.main(GeraTabelas.java:10) 
Caused by: java.lang.NullPointerException 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:244) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206) 
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) 
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:399) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactory>uilderImpl.java:842) 
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:73) 
    ... 4 more 

어떻게 이것이 발생하며 어떻게 해결할 수 있습니까?

+0

당신의'hibernate.cfg.xml'은 어디에 있습니까 - JDBC 구성 문제처럼 보이기 때문에 문제가 있다고 생각합니다. –

+0

그럼 hibernate.cfg.xml 대신에 persistence.xml을 사용하고 있습니다. –

+0

물론, 어떻게 보이나요? –

답변

0

내 실수를 찾았습니다. @Entity로 표시되었지만 persistence.xml에 선언되지 않은 다른 클래스였습니다. 뿐만 아니라 도서관도 사라졌습니다. 나는 libs의 모든 팩을 작동하는 것으로 바 꾸었습니다.

2

MySQL이 실행되지 않을 때이 문제가있었습니다. MySQL을 시작하면 문제가 해결되었습니다. 이 예외를 인터넷 검색을 사람들을위한

+1

고마워요. 제 경우에는 DB 서버 주소에 문제가있었습니다. 20 년 동안 Grails/Spring/Hibernate에서와 같이 좀 더 모호하고 오도 된 오류 메시지를 본 적이 없습니다. – Tobia

+0

동일한 문제, 잘못된 사용자/암호 .. –

1

은 :

Exception during lifecycle processing 
java.lang.NullPointerException   
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:244) 

그것은 우리의 데이터베이스 서버를 다시 시작할 때 내가 보는 예외 내가 자동으로 오래된 연결 및 감지하는 응용 프로그램 서버 연결 풀을 구성 잊어 버린 그들을 재 - 획득 . 즉, 데이터베이스 서버가 다시 시작되면 응용 프로그램 서버를 다시 시작하거나 연결 풀을 플러시해야합니다. 예를 들어, 연결 유효성 검사를 구성하여 연결이 유효하지 않은 경우 모든 연결을 닫는 방법으로 GlassFish에서 연결 풀 플러시를 자동화 할 수 있습니다. 오라클의 간단한 테이블 검증 방법은 SYS.DUAL을 쿼리하는 것입니다.

관련 문제