JPA - EntityManager

0

Witam, nie moge poradzic sobie uruchomieniem EntityManagera, caly czas wyskakuje mi nullpointerException. Ale moze od poczatku. Mam projekt w Eclipsie, utowrzony za pomoca mavena i dynamic project. Stworzylem persistence.xml, ktora wyglada tak :

 

?xml version="1.0" encoding="UTF-8"?>
<persistence 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" version="2.0">
  <persistence-unit name="TestPe" transaction-type="RESOURCE_LOCAL">
    <properties>
      <!-- Common properties -->
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:test-jpa;create=true"/>
      <property name="javax.persistence.jdbc.user" value=""/>
      <property name="javax.persistence.jdbc.password" value=""/>
	</properties>
  </persistence-unit>
</persistence>

Wrzucalem je juz w rozne foldery, np . src/main/resources , src/test/resources, jak rowniej w src/main/webapp/META-INF . Niestety zawsze wyskakuje mi nullponterException. Gdzie mam wrzucic moj plik persistence, bo juz sam nie wiem. Wrzuce jeszcze test :

 
private EntityManager em;
private static EntityManagerFactory factory;
	
    @Before
    public void setUp() throws Exception {

    	factory = Persistence.createEntityManagerFactory("TestPe");
	em = factory.createEntityManager();  <--- zawsze na tym miejscu wyskakue Exception
       
     
    }
    

Za pomoc wielkie dzieki!!!!

0

spróbuj wrzucić plik peristence.xml do: src/main/resources/META-INF/ (lub src/test/resources/META-INF/)
jakby coś nie działało to zrób clean-a projektu Project->Clean i (lub) mvn clean package

0

Ja w persistence.xml nie widze providera ktory by mial byc uzyty - czy tak moze byc to nie jestem pewien.

0

Witam, dzieki za odpowiedzi. Utworzylem folder META-INF w src/test/resources i zadzialalo. Aczkolwiek musialem zmodyfikowac Mavena. Dziwie sie troche, poniewaz przedtem w dependency mialem eclipsLinka i do tego czyste javax.persistence, albo mix . W takim przypadku nie dzialalo. Musialem zdefiniowac javax.persistence od eclipsa, czyli org.eclipse.persistence. Teraz powinno dzialac. Ale nie wiem, dlaczego nalezy miec javax od eclipsa. Dla wszystkich ktorzy maja problem z tym, wrzuce moja konfiguracje, moze komus bedzie pomocna.

POM:

 
...
 	<repositories>
  	   <repository>
		   <id>EclipseLink Repo</id>
		   <a href="http://eclipse.a3-system.be/rt/eclipselink/maven.repo">http://eclipse.a3-system.be/rt/eclipselink/maven.repo</a>
	   </repository>
	</repositories>
  
	<dependencies>
                <dependency>
			<groupId>org.eclipse.persistence</groupId> 
			<artifactId>eclipselink</artifactId> 
			<version>2.3.0</version> 
  		</dependency>
		<dependency>
			<groupId>org.eclipse.persistence</groupId> 
			<artifactId>javax.persistence</artifactId> 
			<version>2.0.3</version> 
  		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
		<dependency>
  			<groupId>org.apache.derby</groupId>
  			<artifactId>derby</artifactId>
  			<version>10.8.2.2</version>
		</dependency>
	</dependencies>  

persistence.xml :

 

 <persistence-unit name="TestPe" transaction-type="RESOURCE_LOCAL">
      	<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
               <class>com.database.KlasaEntity</class>
    
    
    <properties>
      <!-- Common properties -->
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:test-jpa;create=true"/>
      <property name="javax.persistence.jdbc.user" value=""/>
      <property name="javax.persistence.jdbc.password" value=""/>
      
      <property name="eclipselink.ddl-generation" value="create-tables" />
      <property name="eclipselink.ddl-generation.output-mode" value="database" />
	  <property name="eclipselink.logging.level" value="WARNING"/>
      
      </properties>
 </persistence-unit>

Ps. w czasie kiedy ja to robilem, dzialalo. W miedzyczasie mogly zmienic sie repositories lub dependencies w pom.xml

1 użytkowników online, w tym zalogowanych: 0, gości: 1