2012-10-01 3 views
0

최대 절전 모드 3에서 JPA2로 마이그레이션하려고하는데 기준 빌더를 얻을 수 없습니다.entityManager의 기준 빌더에 액세스 할 수 없습니다.

package com.JpaTest.utils; 

import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 

public class EntityManagerProvider { 

    private static EntityManagerProvider instance; 

    private static final String PERSISTENCE_UNIT_NAME = "testPU"; 
    private EntityManagerFactory emf; 
    private EntityManagerProvider em; 

    private EntityManagerProvider() { 
     emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     em = (EntityManagerProvider) emf.createEntityManager(); 
    } 

    public static synchronized EntityManagerProvider getInstance() { 
     if (instance == null) { 
      instance = new EntityManagerProvider(); 
     } 

     return instance; 
    } 

    public EntityManagerProvider getEntityManager() { 
     return em; 
    } 

} 

그리고이 DAO :

나는

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>com.JpaTest</groupId> 
     <artifactId>JpaTest-parent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <relativePath>../../pom.xml</relativePath> 
    </parent> 


    <artifactId>JpaTest-services</artifactId> 
    <version>${JpaTest.version}</version> 
    <packaging>ejb</packaging> 

    <name>JpaTest-services</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 
     <dependency> 
     <groupId>com.JpaTest</groupId> 
     <artifactId>JpaTest-modeles</artifactId> 
     <version>${JpaTest.version}</version> 
    </dependency> 
    <!-- EJB 3.0 --> 
    <dependency> 
     <groupId>javaee</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>5</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- JPA 2 --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
       <version>4.1.7.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.java-persistence</groupId> 
      <artifactId>jpa-api</artifactId> 
       <version>2.0-cr-1</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ejb-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

이 EntityManagerProvider 클래스를 만들어 내 pom.xml 파일에 그 의존성을 추가

package com.JpaTest.dao; 

import java.util.List; 

import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 

import com.JpaTest.model.TestEntity; 

public class JpaTestDaoImpl implements IJpaTestDao { 

    private static final String PERSISTENCE_UNIT_NAME = "testPU"; 
    private EntityManagerFactory emf; 
    private EntityManager em; 

    public JpaTestDaoImpl() { 
     emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     em = emf.createEntityManager(); 
    } 


    @Override 
    public Integer Create(TestEntity c) { 
     em.persist(c); 
     em.flush(); 
     em.refresh(c); 
     //HibernateUtil.getSessionFactory().getCurrentSession().persist(c); 
     //HibernateUtil.getSessionFactory().getCurrentSession().flush(); 
     //HibernateUtil.getSessionFactory().getCurrentSession().refresh(c); 
     return (Integer) c.getId(); 
    } 

    @Override 
    public TestEntity Read(Integer id) { 
     TestEntity c = (TestEntity) em.find(TestEntity.class, id); 
     //TestEntity c = (TestEntity) HibernateUtil.getSessionFactory().getCurrentSession().get(TestEntity.class, id); 
     return c; 
    } 

    @Override 
    public List<TestEntity> ReadAll() { 
     @SuppressWarnings("unchecked") 
     //List<TestEntity> myList = (List<TestEntity>) HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(TestEntity.class).list(); 
     List<TestEntity> myList = em.get :(
     return myList; 
    } 

    @Override 
    public void update(TestEntity c) { 
     HibernateUtil.getSessionFactory().getCurrentSession().update(c); 
     HibernateUtil.getSessionFactory().getCurrentSession().flush(); 
    } 

    @Override 
    public void delete(TestEntity c) { 
     HibernateUtil.getSessionFactory().getCurrentSession().delete(c); 
     HibernateUtil.getSessionFactory().getCurrentSession().flush(); 
    } 


} 

내가 무엇을 볼 수 없습니다를 I 잘못 했어.

답변

0

<groupId>org.jboss.javaee</groupId> 
<artifactId>jboss-javaee</artifactId> 
<version>5.0.1.GA</version> 

에 문제를 해결 이동

<groupId>javaee</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>5</version> 

내부 criteriaBuilder 않고는 javax.persistence 있었다.

그러나 내가 얻지 못하는 한 가지가 있습니다. 둘 다 JEE5 구현이며 둘 다 동일한 것을 포함하지 않아야합니까?

0

당신은 persistence.xml 파일에 추가

<persistence-unit name="servicioPU"> 
     <jta-data-source>java:jboss/datasources/connDS</jta-data-source> 
     <properties> 
     <!-- Properties for Hibernate --> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.show_sql" value="false" /> 
    </properties> 
</persistence-unit> 
관련 문제