Исключение нулевого указателя JPA и derby

Я пытаюсь сделать простое сохранение с jpa 2.0 и derby, но я продолжаю получать исключение NullPointerException.

Исключение и класс объекта — http://pastebin.com/QqXhRdcN

Код, в котором я пытаюсь сохраниться

EntityManager em = emf.createEntityManager();  
  Course c = new Course("cse", 214, "fall", 2010);  
  em.getTransaction().begin();  
  em.persist(c);  
  em.getTransaction().commit();  
  em.close();  

Исключение нулевого указателя возникает в строке 171, которая является первой строкой приведенного выше кода.

Заранее спасибо!


person Braxton    schedule 23.10.2010    source источник


Ответы (1)


Ваш EntityManagerFactory не создается должным образом во время инициализации (так что это null), поэтому NullPointerException когда вы пытаетесь использовать его для получения EntityManager.

И хотя EclipseLink, безусловно, не должен завершаться с ошибкой NPE при попытке создать интернационализированное сообщение об исключении (вы должны зарегистрировать это как ошибку), трассировка по-прежнему содержит полезную информацию, как показано ниже жирным шрифтом:

[EL Severe]: 2010-10-23 05:27:14.092--ServerSession(1673653)--java.lang.NullPointerException
    at java.util.ResourceBundle.getBundle(Unknown Source)
    at org.eclipse.persistence.exceptions.i18n.ExceptionMessageGenerator.buildMessage(ExceptionMessageGenerator.java:47)
    at org.eclipse.persistence.exceptions.DatabaseException.unableToAcquireConnectionFromDriverException(DatabaseException.java:376)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:91)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:579)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:380)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:157)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:214)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:202)
    ...

Скорее всего, что-то не так с конфигурацией вашего пула соединений, EclipseLink не может получить от него действительное соединение.

Я не могу дать более точный ответ без более подробной информации о ваших настройках, таких как persistence.xml, конфигурация источника данных Tomcat, способ использования Derby (в режиме сервера?). Но это где посмотреть.

person Pascal Thivent    schedule 23.10.2010