EntityManager에 대한 지속성 제공자가 없습니다.


148

내을 persistence.xml사용하여 동일한 이름을 가진 TopLink세 이하 META-INF디렉토리. 그런 다음 코드를 호출하여 다음을 수행합니다.

EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");

그러나 다음과 같은 오류 메시지가 나타납니다.

2009-07-21 09 : 22 : 41,018 [main] 오류-agisdb라는 EntityManager에 대한 지속성 공급자가 없습니다.
javax.persistence.PersistenceException : agisdb라는 EntityManager에 대한 지속성 제공자가 없습니다.
    javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89)에서
    javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60)에서

여기에 persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="agisdb">
        <class>com.agis.livedb.domain.AddressEntity</class>
        <class>com.agis.livedb.domain.TrafficCameraEntity</class>
        <class>com.agis.livedb.domain.TrafficPhotoEntity</class>
        <class>com.agis.livedb.domain.TrafficReportEntity</class>
        <properties>
            <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
            <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="toplink.jdbc.user" value="root"/>
            <property name="toplink.jdbc.password" value="password"/>
        </properties>
    </persistence-unit>
</persistence>

클래스 경로에 있어야합니다. 그러나 위의 오류가 발생했습니다.

답변:


85

<persistence-unit name="agisdb">, 퍼시스턴스 프로 바이더의 이름을 정의 :

<provider>org.hibernate.ejb.HibernatePersistence</provider>

5
Derby를 사용하고 있으며 이것을 지정할 필요가 없습니다 (그렇지만 문제를 해결 한 후에는 제거하기 위해 제거했습니다). persistence.xml이 프로젝트의 Eclipse 소스 경로에있는 폴더에 있었지만 src / META-INF 폴더에 없기 때문에 마침내 오류가 발생했습니다. 나는 그것이 어딘가에 src / *에 배선되어 있다고 생각하고있다
Fuhrmanator

6
이것은 필자의 경우에는 필요하지 않았지만 아래 Ualter Jr 의 답변에 설명 된대로 hibernate-entitymanager * .jar 클래스 경로 지정 . hibernate-core-4.3.7.jar , hibernate-entitymanager-4.3.7.Final.jarhibernate-jpa-2.1-api-1.0.0.jar 과 함께 독립형 GWT 앱을 사용하고 있습니다.
Andreas Dietrich

3
@AndreasDietrich와 마찬가지로 pom.xml에서 "hibernate-core-4.3.10"이슈를 "hibernate-entitymanager-4.3.10"으로 바꾼 후 (이 maven을 사용)이 오류는 사라졌습니다. 실제로 hibernate.org/orm/downloads 는 JPA에 "hibernate-entitymanager-4.3.10"을 사용해야한다고 말합니다.
Hong

1
이 외에도, 나는 또한 hibernate-entitymanager-3.4.0.GA에서 3.6.10.Final로 올라갔습니다 . 만약 당신이 여전히 Hibernate 3을 사용하는 레거시 코드베이스를 가지고 있다면
Javi Vazquez

5
내가 조금 당신이 문제로 실행되지 않습니다 놀라게 해요 당신 <provider/>, 최대 절전 모드-4를 사용하는 동안에 당신이 당신의 공급자를 변경해야합니다 <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>, 참조 stackoverflow.com/questions/23041964/...을 .
Rob

86

"hibernate-entitymanager.jar"응용 프로그램의 클래스 경로에 넣습니다 .
최신 버전 "hibernate-core.jar"의 경우 더 이상 사용되지 않는 대신 사용해야 합니다.hibernate-entitymanager

Eclipse 와 같은 일부 IDE를 실행하는 경우 :Project Properties -> Java Build Path -> Libraries.

그렇지 않으면 /lib응용 프로그램 에 넣으십시오 .


3
이것이 원인이라는 것을 알기 위해 몇 시간이 걸렸습니다. 이 피의 항아리를 찾는 다른 사람들을 위해, Hibernate 4.1.3의 경우, 그것의 hibernate-release-4.1.3.Final \ lib \ jpa \ hibernate-entitymanager-4.1.3.Final.jar
Vedran

7
그리고 메이븐을 사용하는 사람들을 위해, 그 그룹 ID 것이다 org.hibernateartifactId를hibernate-entitymanager
사이먼 포스 버그

2
그것은 나를 위해 eclipselink.jar 였고 경로에 없었습니다. 경로에 최대 절전 모드 * something.jar이 없습니다.
사용자가 알 수 없음

3
persistence.xml이 클래스 경로에 있는지 확인 하고이 프로젝트의 모든 측면과 작동하지 않는 프로젝트를 비교하는 데 몇 시간을 보냈습니다. persistence.xml이 누락되었거나 해당 이름의 PU가 누락되었거나 최대 절전 항아리가없는 경우 발생할 수 있으므로 매우 잘못된 오류 메시지가 표시됩니다.
David Mann

나를 위해 그것은 org.eclipse.persistence.jpa범위 테스트와 함께했다.
Marek

67

persistence.xml파일이 디렉토리에 있는지 확인하십시오 .<webroot>/WEB-INF/classes/META-INF


8
이것은 나를 위해 작동하지 않았다, 지속성 단위를 찾을 수 없습니다 : 'null'오류. 다시 /src/main/resources/META-INF/persistence.xml로 이동
tomasb

1
나는 이것이 toplink (또는 다른 웹 관련 것들)를 사용하는 사람들에게 적용된다고 생각합니다. 다른 모든 사람들이 여기에 다른 답변이 더 적합 할 수 있습니다.
Simon Forsberg 12

2
고마워, 경로는 대상 / 클래스 / META-INF
Frizz1977

마찬가지로 어떤 이상한 이유로 META-INF 디렉토리에 있어야합니다. 그렇지 않으면 작동하지 않습니다 ...
Thomas

17

내 pom.xml 파일에서 이것을 필요로했습니다.

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.6.Final</version>
</dependency>

버전 4.3.11에서 작동합니다.
petertc

더 이상 사용되지 않습니다. 위를 참조하십시오. 대신 최대 절전 모드를 사용하십시오.
foo

16

같은 문제에 직면하여 오랫동안 해결책을 찾지 못했습니다. 내 경우에는 교체하는 데 도움이되었습니다.

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

여기 에서 해결책을 찾았 습니다


2
Hibernate 4.3.5에서 5.2.12로 업그레이드하고 있었고이 공급자 이름 변경으로 문제가 해결되었습니다. 이 설정은 JPA가 Maven 중앙 저장소에서 더 이상 사용되지 않는 것으로 표시된 entity-manger .jar 대신 코어 .jar 파일을 사용할 수있는 것으로 보입니다. 공유해 주셔서 감사합니다.
joshpt

10

또 다른 요점이 있습니다. Eclipse RCP 환경에서이 문제가 발생하면 팩토리 생성을 Persistence.createEntityManagerFactory에서new PersistenceProvider().createEntityManagerFactory

이에 대한 자세한 내용 은 ECF 를 참조하십시오 .


이것은 org.eclipse.persistence.jpa 2.4.0에서 겪었던 정확한 문제였습니다. 나는 왜 내 persisence.xml을 찾을 수 없는지 궁금해하는 데 머리카락을 뽑는 데 2 ​​시간을 보냈습니다. 모든 예제는 이것을 포함하지 않는 것 같습니다. 오 잘 ... 많은 감사합니다!
Mark Miller

9

어쩌면 <provider>org.hibernate.ejb.HibernatePersistence</provider>항아리에서 다른 공급자를 참조하면서 하나의 공급자를 정의 했을 수도 있습니다 . 저와 함께 일어났습니다 : persistence.xml 공급자는 openjpa 였지만 클래스 경로에서 eclipselink를 사용하고있었습니다. 이 도움을 바랍니다!


7

빠른 조언 :

  • persistence.xml이 클래스 경로에 있는지 확인하십시오.
  • 최대 절전 모드 공급자가 클래스 경로에 있는지 확인하십시오.

독립형 애플리케이션 (JavaEE 외부)에서 JPA를 사용하려면 지속성 제공자를 어딘가에 지정해야합니다. 이것은 내가 아는 두 가지 방법으로 수행 할 수 있습니다.

  • 지속성 단위에 제공자 요소를 추가하십시오. <provider>org.hibernate.ejb.HibernatePersistence</provider>(Chris의 정답에 설명 된대로 https : //.com )
  • : 또는 인터페이스 javax.persistence.spi.PersistenceProvider에 대한 공급자가 서비스로 지정해야합니다 여기를 참조 http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html 이 보통이다 ( 최대 절전 모드 또는 다른 JPA 구현을 클래스 경로에 포함시킬 때 포함

필자의 경우, maven misconfiguration으로 인해 hibernate-entitymanager jar가 다른 모듈의 일시적인 종속성이더라도 종속성으로 포함되지 않았다는 것을 알았습니다.


/ facepalm-최대 절전 모드 공급자에 대한 maven 종속성을 추가하는 것을 잊었습니다. 감사합니다!
jgitter

5

Eclipse를 사용하는 경우 제외 패턴이 persistence.xml빌드 경로의 소스 폴더에서 제거되지 않는지 확인하십시오 .

  1. 로 이동 속성 -> 자바 빌드 경로 -> 소스

  2. MyProject/src/main/java -> Excluded: <your_pattern>
    트리 노드 에있는 제외 패턴을 확인하십시오.
  3. 선택적으로 Excluded: (None)노드를 선택 하고 왼쪽에서 편집 ... 버튼을 클릭하여 설정 하십시오 .

내 문제를 해결했다. 페치 / 풀 후 제외 된 패턴이 "**"로 설정되었습니다. 이유를 모르겠습니다.
Jocelyn

5

나는 몇 년 동안 파티에 늦었지만 HSQLDB 및 데스크탑 JavaFX 프로그램으로 작업하는 Hibernate 3.5.1을 얻는 동안 같은 예외를 겪었다. 이 스레드의 도움과 많은 시행 착오로 작동하도록했습니다. 다양한 문제에 대해이 오류가 발생하는 것 같습니다.

No Persistence provider for EntityManager named mick

최대 절전 모드 자습서 예제를 작성하려고 시도했지만 Java 10을 사용했기 때문에 쉽게 빌드하고 실행할 수 없었습니다. 나는 그 문제를 해결하는 데 시간을 낭비하고 싶지 않아 포기했습니다. module-info.java 파일 (Jigsaw)을 설정하는 것은 많은 사람들이 아직 발견하지 못한 또 다른 헤어볼입니다.

다소 혼란 스럽습니다. 이들 (아래)이 내 build.gradle 파일에 필요한 유일한 두 파일이라는 것입니다. 어떤 병을 포함시켜야하는지에 대해서는 Hibernate 문서가 명확하지 않다. 엔터티 관리자는 혼란을 일으켜 최신 Hibernate 버전에서 더 이상 필요하지 않으며 javax.persistence-api도 아닙니다. 참고로 Java 10을 사용하고 있으므로 jaxb-api를 포함하여 일부 xml-bind 오류를 해결하고 module-info.java 파일에 java persistence 모듈에 대한 항목을 추가해야했습니다.

Build.gradle

// https://mvnrepository.com/artifact/org.hibernate/hibernate-core
compile('org.hibernate:hibernate-core:5.3.1.Final')

// https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'

Module-info.java

// Used for HsqlDB - add the hibernate-core jar to build.gradle too
requires java.persistence;

최대 절전 모드 5.3.1을 사용하면 아래에서 persistence.xml 파일에 공급자를 지정할 필요가 없습니다. 제공되지 않으면 최대 절전 모드 공급자가 기본적으로 선택됩니다.

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

persistence.xml 파일은 올바른 디렉토리에 있어야합니다.

src/main/resources/META-INF/persistence.xml

Dialect를 검사하는 Intellij 디버거에서 최대 절전 모드 소스 코드를 단계별로 실행하면 persistence.xml 파일의 dialect 속성이 없어서 동일한 예외가 발생했습니다. 나는 이것을 추가했다 (귀하의 DB 유형에 맞는 것을 추가하십시오) :

<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

이 후에도 여전히 동일한 예외가 발생하므로 Intellij에서 디버거를 다시 단계별로 실행하면 유지하려는 테스트 엔터티 (간단한 부모-자식 예)에 OneToMany, ManyToOne 관계에 대한 주석이 누락 된 것으로 나타났습니다. 나는 이것을 고쳤고 예외는 사라졌고 엔티티는 계속 유지되었다.

다음은 전체 최종 persistence.xml입니다.

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
            http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="mick" transaction-type="RESOURCE_LOCAL">
    <description>
        Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
    </description>

    <!-- Provided in latest release of hibernate
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    -->

    <class>com.micks.scenebuilderdemo.database.Parent</class>
    <class>com.micks.scenebuilderdemo.database.Child</class>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver"/>

        <property name="javax.persistence.jdbc.url"
                  value="jdbc:hsqldb:file:./database/database;DB_CLOSE_DELAY=-1;MVCC=TRUE"/>

        <property name="javax.persistence.jdbc.user" value="sa"/>
        <property name="javax.persistence.jdbc.password" value=""/>

        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="create"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
    </properties>

</persistence-unit>

</persistence>

아마이 보석에 반나절을 낭비했을 것입니다. 내 조언은 매우 간단하게 시작하는 것입니다.이 예외는 많은 원인이있을 수있는 것처럼 하나 또는 두 개의 필드가있는 단일 테스트 엔터티입니다.


구성 세부 정보에 대해 대단히 감사합니다. 문제 해결에 정말 도움이되었습니다.
Doogle

4

코너 케이스 : m2Eclipse를 사용하는 경우 자동으로 리소스 폴더에 제외를 넣습니다. 그런 다음 일식 내에서 테스트를 실행하려고하면 persistence.xml이 없으면이 오류가 발생합니다.


3

'src'폴더 아래에 persistence.xml 파일을 작성했는지 확인하십시오. 프로젝트 폴더 아래에 생성했으며 이것이 내 문제였습니다.


이클립스 4.4.0은 SRC 폴더를 중첩하고 싶지 않기 때문에 META-INF를 최상위 레벨에두기 위해 persistence.xml이 클래스 경로에 있다고 생각했습니다. 아니! 운영 체제에서 src / META-INF를 수동으로 작성하고 persistence.xml 파일을 직접 이동해야했습니다. 아마도 이클립스 에서이 작업을 수행 할 수는 있지만 알아낼 수 없었습니다.
Fuhrmanator


2

엔티티 관리자가 많은 지속성 단위를 가리 키려고 할 때 발생합니다. 다음 단계를 수행하십시오.

  1. 편집기에서 관련 파일을 엽니 다 (IDE에서 프로젝트가 닫힌 경우)
  2. 지속성 및 엔티티 관리자 관련 코드를 모두 삭제하십시오.
  3. 파일을 저장
  4. IDE에서 프로젝트를 엽니 다
  5. 이제 선택한 DB 또는 테이블을 바인딩하십시오.

2

나는 같은 문제에 직면했지만 EclipseLink 버전 2.5.0에서 .

필자는 반드시 또 다른 jar 파일을 추가하여 문제를 해결했습니다 ( javax.persistence_2.1.0.v201304241213.jar.jar ).

항아리 필요 :
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
-하여 jdbc.jar (사용하는 데이터베이스에 따라 다름).

이게 도움이 되길 바란다.


2

또한이 오류가 있었지만 문제는에서 네임 스페이스 uri였습니다 persistence.xml.

버전 2.1에서 2.0으로 교체 http://xmlns.jcp.org/xml/ns/persistence했습니다 http://java.sun.com/xml/ns/persistence.

지금 작동하고 있습니다.


그것이 바로 Tomcat을 사용하여 일어난 일입니다. 방금 새로운 사용자를 명확히하기 위해 전체 헤더를 추가했습니다
childno͡.de

2

클래스 경로에 hibernate-entitymanager-x.jar를 추가해야합니다.

Hibernate 4.x에서 jar 파일이 존재하면 persistence.xml 파일에 org.hibernate.ejb.HibernatePersistence를 추가 할 필요가 없습니다.


1

이 질문에 이미 답변을했지만, 나를 붙잡고있는 팁을 게시하고 싶었습니다. 이 예외는 이전 오류 후에 발생했습니다. 나는 이것을 얻고 있었다 :

property toplink.platform.class.name is deprecated, property toplink.target-database should be used instead.

새로운 속성 이름을 포함하도록 persistence.xml을 변경했지만

<property name="toplink.target-database" value="oracle.toplink.platform.database.oracle.Oracle10Platform"/>

더 이상 사용되지 않는 속성 이름에 대한 메시지에 따라 위와 같은 PersistenceException과 다른 모든 예외 문자열이 나타납니다. 내 팁 : 예외 소시지의 시작을 확인하십시오.

Glassfish v2.1.1에는 재배치 또는 배포 취소 및 배포시 어딘가에 캐시되는 persistence.xml이 업데이트되지 않는 버그가있는 것 같습니다. 서버를 다시 시작한 다음 작동했습니다.



1

클래스 경로에 다음 jar 파일이 필요합니다.

  1. antlr-2.7.6.jar
  2. commons-collections-3.1.jar
  3. dom4j-1.6.1.jar
  4. 최대 절전 모드-주석 -4.0.1.Final.jar
  5. 최대 절전 모드 코어 -4.0.1.Final.jar
  6. hibernate-entitymanager.jar
  7. hibernate-jpa-2.0-api-1.0.0.Final.jar
  8. javassist-3.9.0.jar
  9. jboss-logging-3.1.1.GA.jar
  10. jta-1.1.jar
  11. slf4j-api-1.5.8.jar
  12. xxx-jdbc-driver.jar


1

Hibernate 5.2.5
Jar 파일 클래스 경로에 필요하다. 이것은 Hibernate 5.2.5 Final 릴리스의 필수 폴더 안에 있습니다. http://hibernate.org/orm/downloads/ 에서 다운로드 할 수 있습니다 .

  1. antlr-2.7.7
  2. cdi-api-1.1
  3. 동급생 -1.3.0
  4. dom4j-1.6.1
  5. el-api-2.2
  6. geronimo-jta_1.1_spec-1.1.1
  7. 최대 절전 모드-주석-5.0.1. 최종
  8. 최대 절전 모드 -5.2.5. 최종
  9. 최대 절전 모드 -jpa-2.1-api-1.0.0. 최종
  10. jandex-2.0.3. 최종
  11. javassist-3.20.0-GA
  12. javax.inject-1
  13. jboss-interceptor-api_1.1_spec-1.0.0. 베타 1
  14. jboss-logging-3.3.0. 최종
  15. jsr250-api-1.0

xml 파일 만들기 "의 persistence.xml" 의를

YourProject / src / META-INF / persistence.xml

persistence.xml

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

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="sample">

    <class>org.pramod.data.object.UserDetail</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate_project"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value="root"/>
        <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="false"/>

        <property name="hibernate.cache.use_second_level_cache" value="false"/>

        <property name="hibernate.archive.autodetection" value="true"/>
    </properties>
</persistence-unit>

  1. <persistance> 태그에 언급 된 정보와 버전은 2.1이어야합니다.
  2. <persistance-unit> 태그 이름을 참조하십시오. name은 "sample" 로 언급됩니다 . 이 이름은로드하는 동안 정확히 동일하게 사용해야합니다

EntityManagerFactor = Persistance.createEntityManagerFactory ( "sample"); . 명명 규칙에 따라 "샘플"을 변경할 수 있습니다.

이제 엔티티 클래스를 작성하십시오. 패키지 org.pramod.data.object의 예제 UserDetail에 따른 이름

UserDetail.java

package org.pramod.data.object;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user_detail")
public class UserDetail {
    @Id
    @Column(name="user_id")
    private int id;
    @Column(name="user_name")
    private String userName;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }   
    @Override
    public String toString() {
       return "UserDetail [id=" + id + ", userName=" + userName + "]";
    }
}

이제 main 메소드로 클래스를 작성하십시오.

HibernateTest.java

package org.pramod.hibernate;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.pramod.data.object.UserDetail;

public class HibernateTest {
    private static EntityManagerFactory entityManagerFactory;

    public static void main(String[] args)  {
        UserDetail user = new UserDetail();
        user.setId(1);
        user.setUserName("Pramod Sharma");

        try {
            entityManagerFactory = Persistence.createEntityManagerFactory("sample");
            EntityManager entityManager = entityManagerFactory.createEntityManager();
            entityManager.getTransaction().begin();
            entityManager.persist( user );
            entityManager.getTransaction().commit();
            System.out.println("successfull");
            entityManager.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

출력은

UserDetail [id=1, userName=Pramod Sharma]
Hibernate: drop table if exists user_details
Hibernate: create table user_details (user_id integer not null, user_name varchar(255), primary key (user_id))
Hibernate: insert into user_details (user_name, user_id) values (?, ?)
successfull

1

내 경우에는, 이전에 내가 데이터베이스 스키마에 의해 엔티티를 생성하기 위해 아이디어를 사용하고는 persistence.xml자동으로 생성 src/main/java/META-INF하고,에 따라 https://stackoverflow.com/a/23890419/10701129 , 나는로 이동src/main/resources/META-INF 로도 표시 META-INF, 소스 루트. 그것은 나를 위해 작동합니다.

그러나 단순히 원본 META-INF (즉, src / main / java / META-INF)를 소스 루트로 표시하면 작동하지 않아 혼란 스럽습니다.

그리고 이것은 구조체입니다 : 여기에 이미지 설명을 입력하십시오


0

Persistence.createEntityManagerFactory("JPAService")다른 클래스 에 다른 이름이 있으면 오류가 발생합니다. 리팩토링하면 제 경우에는 다른 이름을 얻을 수 있습니다. 하나 개의 클래스에서 자동 생성 Persistence.createEntityManagerFactory("JPAService")에서 private void initComponents(), ContactsTable 클래스는 달랐다 Persistence.createEntityManagerFactory("JPAServiceExtended")DBManager 클래스입니다.


0

예를 들어 persistence.xml에 정보를 추가 <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>한 다음 클래스 경로에 라이브러리가 있는지 확인하십시오 (예 : Maven의 종속성 추가).

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.5.0</version>
</dependency>

0

해당 장치 이름 확인

<persistence-unit name="com.myapp.model.jpa"
    transaction-type="RESOURCE_LOCAL">    
public static final String PERSISTENCE_UNIT_NAME = "com.myapp.model.jpa";
Persistence.createEntityManagerFactory(**PERSISTENCE_UNIT_NAME**);

0

내 경우에는 다음과 같이 두 가지 속성에서 실수가 발생했습니다. '이름이 지정된 EntityManager에 대한 지속성 공급자 없음'을 변경하면 폐기되었습니다.

따라서 속성과의 테스트 연결을 시도하여 모든 것이 올바른지 확인할 수 있습니다.

<property name="javax.persistence.jdbc.url" value="...”/>
<property name="javax.persistence.jdbc.password" value="...”/>

이상한 오류, 그 때문에 완전히 혼란 스러웠습니다.


0

persistence.xml을 수동으로 폴더에 복사하십시오 <project root>\bin\META-INF. 이것은 EclipseLink 2.5.2간단한 플러그인 프로젝트 를 사용하여 Eclipse Neon의 문제를 수정했습니다 .


0

같은 문제가 있었지만 이것은 실제로 저에게 효과적이었습니다.

mvn install -e  -Dmaven.repo.local=$WORKSPACE/.repository.

주의 : 위의 maven 명령은 모든 프로젝트 종속성을 처음부터 다시 설치합니다. 네트워크 요청 maven으로 인해 콘솔에 자세한 로그가로드됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.