2014-04-29 4 views
0

저는 REST 서버에서 동시에 EJB \ hibernate를 배우고 있습니다. DAO 서비스 콜을 할 때 내 퍼시스턴스 유닛을 찾을 수 없다는 문제가 발생했습니다. 나는 "EntityManager의 이름 persistenceUnit에 대한 어떠한 지속성 제공자를 얻을이 경우persistenceUnit라는 EntityManager에 대한 지속성 공급자가 없습니다.

@Stateless 
public class HotelDAO { 

public List<HotelsEntity> getAll() { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); 
EntityManager em = emf.createEntityManager(); 

    // TODO complete me 
    CriteriaBuilder builder = em.getCriteriaBuilder(); 
    CriteriaQuery<HotelsEntity> criteria = builder.createQuery(HotelsEntity.class); 
    Root<HotelsEntity> root = criteria.from(HotelsEntity.class); 
    criteria.select(root); 
    TypedQuery<HotelsEntity> resultQuery = em.createQuery(criteria); 
    return resultQuery.getResultList(); 
} 
} 

: 나는

을"unitName persistenceUnit에 대한의 EntityManagerFactory를 검색 할 수 없습니다 "얻을이 경우

@Stateless 
public class HotelDAO { 

@PersistenceContext(unitName = Constants.PERSISTENCE_UNIT) 
private EntityManager em; 


public List<HotelsEntity> getAll() { 
// TODO complete me 
    CriteriaBuilder builder = em.getCriteriaBuilder(); 
    CriteriaQuery<HotelsEntity> criteria = builder.createQuery(HotelsEntity.class); 
    Root<HotelsEntity> root = criteria.from(HotelsEntity.class); 
    criteria.select(root); 
    TypedQuery<HotelsEntity> resultQuery = em.createQuery(criteria); 
    return resultQuery.getResultList(); 
} 
} 

은 그 때 나는 이것을 시도 ".

내가 유래에서 유사한 문제를 checl : 아래

  • persitence.xml META-INF
  • 공급자의 persistence.xml에서 언급 DAO는 EJB에 주입
  • 난 몰라 봄을 사용하십시오

어떤 gueses있으세요?

<?xml version="1.0" encoding="UTF-8"?> 

<persistence-unit name="persistenceUnit" transaction-type="JTA"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <jta-data-source>jdbc/HospitalityDataSource</jta-data-source> 
    <class>com.example.model.AmmenitiesEntity</class> 
    <class>com.example.model.HotelPropertyEntity</class> 
    <class>com.example.model.HotelsEntity</class> 
    <class>com.example.model.InventoriesEntity</class> 
    <class>com.example.model.ReservationEntity</class> 
    <class>com.example.model.RoomEntity</class> 
    <class>com.example.model.RoomPropertyEntity</class> 
    <properties> 
     <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydb"/> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.connection.username" value="dbroot"/> 
     <property name="hibernate.connection.password" value="password"/> 
    </properties> 
</persistence-unit> 

의 pom.xml

<dependencies> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.5.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>2.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-json-jackson</artifactId> 
     <version>2.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>annotations-api</artifactId> 
     <version>6.0.29</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish</groupId> 
     <artifactId>javax.ejb</artifactId> 
     <version>3.1</version> 
    </dependency> 
</dependencies> 
내가 잘못 아니에요 경우에, 나는이 persistence.xml는 SRC에 있어야합니다 생각

Structure

+0

여러 개의 프로젝트가 있습니까? 또는 하나의 EJB 프로젝트? – Hirak

+0

첫 번째 질문 : 그것은 하나의 프로젝트입니다/두 번째 질문은 이해가 안됩니다 : 당신은 무엇을 의미하는 경우 내 애플 리케이션에서 EJB를 사용합니다 –

+0

그래서 EJB와 하이버 네이트와 persistence.xml을 포함하는 단일 프로젝트가 있습니까? 프로젝트 구조를 게시 할 수 있습니까? 또 다른 질문은 ... 서버에서 JNDI "jdbc/HospitalityDataSource"를 사용할 수 있는지 확인 했습니까? – Hirak

답변

1

/주/자원/나 TA-INF/persistence.xml

+0

네 말이 맞지만, 이제 java.lang.ClassNotFoundException : org.hibernate.jpa.HibernatePersistenceProvider를 던져 버렸다. 방금 resource \ META-INF에서 xml을 옮겼습니다. –

+0

pom.xml에 hibernate-entitymanager 의존성이 있습니까? –

+0

예, 내가 가진 : org.hibernate 최대 절전 모드 - EntityManager의 4.3.5.Final

관련 문제