Исключение нулевого указателя в JPA и дерби - PullRequest
1 голос
/ 23 октября 2010

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

Исключение и класс сущности - http://pastebin.com/QqXhRdcN

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

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

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

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

1 Ответ

1 голос
/ 23 октября 2010

Ваш 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 <b>org.eclipse.persistence.exceptions.DatabaseException.unableToAcquireConnectionFromDriverException(DatabaseException.java:376)</b>
    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 (в режиме сервера?). Но вот где искать.

...