EntityManager immer null

fsmarine

Mitglied
Hallo Leute,

ich habe das Problem das mein EntityManager immer null ist. Ich arbeite übrigens mit keinem App. Server will aber gerne auf eine Derby (Enbedded) Datenbank mittels Toplink zugreifen. Benutze als IDE Netbeans. Die entsprechenden EntityBeans sind für mich nur über eine jar kompiliert erreichbar, aber sind Fehlerfrei

Hier der relevante Code:

Persistenz Unit:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
  <persistence-unit name="HelloWorldPU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="toplink.jdbc.user" value=""/>
      <property name="toplink.jdbc.password" value=""/>
      <property name="toplink.jdbc.url" value="jdbc:derby:C:\data\SchedulerDB"/>
      <property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="toplink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Der Datenzugriff:

Code:
public class DataAccess {
    
    @PersistenceUnit
    private EntityManagerFactory factory;
    
    public List<Timetable> findAllTimetables() {
        EntityManager em = factory.createEntityManager();
                
        return em.createNamedQuery("findAllTimetable").getResultList();
    }
}

ich habe es auch schon über

Code:
@PersistenceContext 
private EntityManager em;

versucht. Nur funktioniert das absolut nicht. Der entityManager oder die EntityManagerFactory ist immer null. Habe ich hier ein allgemeinen Denkfehler? Da ich mit einem App. Server dabei keine Probleme habe !?

P.s. im Vordergrund habe ich eine kleine Visual Web JSF - mit Woodstock Framework - Anwendung stehen die diese Funktionen benötigt und über ein Tomcat ausgeführt wird.

Ich bin für jede Hilfe dankbar
 
Versuchs mal so:

Code:
EntityManager em = Persistence.createEntityManagerFactory("HelloWorldPU").createEntityManager();
 
Nur dass du verstehst, warum es nicht funktioniert hat. Du hast halt keinen Container, der die Resource injecten hätte können. In Non-managed Umgebungen musst du dir die Instanz selbst erzeugen.

Gruß
Ollie
 
Zurück