2012-12-15 2 views
1
Below is my perisistence.xml, having the datasource. 

<persistence-unit name="employee" transaction-type="RESOURCE_LOCAL"> 
    <non-jta-data-source>jdbc/MyDS</non-jta-data-source> 
</persistence-unit> 

내가 독립에 createEntityManager에 노력하고 있습니다에서 데이터 소스와 독립 JPA를 실행하고 저를 도와주세요, 샘플 쿼리를 실행할 수 없습니다.는 persistence.xml을

public static void main(String[] args) { 

Map<String, String> properties = new HashMap<String, String>(); 

     // Ensure RESOURCE_LOCAL transactions is used. 
     properties.put("javax.persistence.transactionType", 
      PersistenceUnitTransactionType.RESOURCE_LOCAL.name()); 

     // Configure the internal EclipseLink connection pool 
     properties.put("javax.persistence.jdbc.driver" , "oracle.jdbc.OracleDriver"); 
     properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@localhost:1521:ORCL"); 
     properties.put("javax.persistence.jdbc.user", "scott"); 
     properties.put("javax.persistence.jdbc.password", "tiger"); 

     // Ensure that no server-platform is configured 
     properties.put("eclipselink.target-server", TargetServer.None); 

     entityManagerFactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME,properties); 
     entityManager = entityManagerFactory.createEntityManager();     
     Query query = entityManager.createQuery(" select d from XyzEntity d"); 
     List<XyzEntity> xyzEntityList = query.getResultList(); 
     System.out.println("size is"+xyzEntityList.size()); 
    } 

위 코드는 여전히 데이터 소스를 찾고 있습니다.

도와주세요.

답변

1

는 클래스에 넣어 속성을 삭제 < 비 JTA 데이터 소스 > 태그를 삭제하고 다음과 같이 persistence.xml 파일에 추가 :

<properties> 
    <property name="javax.persistence.jdbc.driver" value="the.driver"/> 
    <property name="javax.persistence.jdbc.url" value="the url"/> 
    <property name="javax.persistence.jdbc.user" value="the user"/> 
    <property name="javax.persistence.jdbc.password" value="the pass"/> 
</properties> 

당신은 추가해야합니다 < 지속성 단위 > 태그 아래에 너무 당신의 영속 제공 :이 도움이

<provider>bla.bla.bla.bla.BlaProvider</provider> 

희망.

+0

위와 비슷한 persistence.xml을 가진 예제에서 @PersistenceContext 주석을 사용하여 EntityManager 인스턴스를 삽입하려고합니다. 나는 transaction-type = "JTA"를 지정했다. 하지만, 여전히 null로 EntityManager 인스턴스를 얻고 있습니다. 주사를 맞지 않는 군. 나는이 답변에 지정된대로 속성을 지정했습니다. 변경하려면 어떤 구성이 필요합니까? 독립형 Java 응용 프로그램에서이 작업을 수행하고 있습니다. –

+0

독립형 응용 프로그램에있는 경우 JTA 환경을 사용할 수 없으며 사용자 정의 트랜잭션 관리자로 트랜잭션을 제어해야하며 문제가있는 새 질문을 열 수 있습니다. – n3k0

관련 문제