2010-10-23 8 views
1

J'essaie de faire une persistance simple avec jpa 2.0 et derby mais je continue à obtenir une exception NullPointerException.JPA et derby null pointeur exception

Exception et la classe entité - http://pastebin.com/QqXhRdcN

Le code où je suis en train de persister

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

L'exception de pointeur NULL se produit à la ligne 171 qui est la première ligne du code ci-dessus.

Merci d'avance!

Répondre

1

Votre EntityManagerFactory ne soit pas correctement créé au moment de l'initialisation (il est donc null), d'où le NullPointerException lorsque vous essayez de l'utiliser pour obtenir un EntityManager.

Et tout EclipseLink ne devrait certainement pas échouer avec un NPE tout en essayant de générer un message internationalisé à l'exception (vous devez vous connecter cela comme un bug), la trace contient encore des informations utiles, comme indiqué en gras ci-dessous:

[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) 
    ...

Il y a très probablement quelque chose qui ne va pas dans la configuration de votre pool de connexions, EclipseLink n'est pas capable d'obtenir une connexion valide.

Je ne peux pas donner une réponse plus précise sans plus de détails sur vos paramètres comme le persistence.xml, la configuration de la source de données Tomcat, la façon dont vous utilisez Derby (en mode serveur?). Mais c'est là que regarder.

+0

+1 pour repérer le bit utile :) – Bozho