저는 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에 있어야합니다 생각
여러 개의 프로젝트가 있습니까? 또는 하나의 EJB 프로젝트? – Hirak
첫 번째 질문 : 그것은 하나의 프로젝트입니다/두 번째 질문은 이해가 안됩니다 : 당신은 무엇을 의미하는 경우 내 애플 리케이션에서 EJB를 사용합니다 –
그래서 EJB와 하이버 네이트와 persistence.xml을 포함하는 단일 프로젝트가 있습니까? 프로젝트 구조를 게시 할 수 있습니까? 또 다른 질문은 ... 서버에서 JNDI "jdbc/HospitalityDataSource"를 사용할 수 있는지 확인 했습니까? – Hirak