Search code examples
mavenjpaspring-dataeclipselink

Dependency to EclipseLink vs org.eclipse.persistence.jpa


I wanted to use EclipseLink for Spring Boot in my Spring Boot project. I was able to configure everything. But when I was implementing I found one strange thing. I had to include EclipseLink as implementation for JPA in my pom.xml. My first try was:

<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>RELEASE</version>

However, when I was trying to run my code each time I received an exception:

Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

I was searching on their website https://wiki.eclipse.org/EclipseLink/Maven and it is written there that dependency to EclipseLink should contain all the other implementation.

I tried to change dependency in pom.xml to:

<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>RELEASE</version>

And everything works as expected. Does this dependency contains more than EclipseLink? Does not EclipseLink dependency contains implementation for bean validation?


Solution

  • Does this dependency contains more than EclipseLink?

    Yes, if you see the pom.xml of org.eclipse.persistence.jpa dependency you'll find those dependencies:

    <dependencies>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>javax.persistence</artifactId>
                <version>2.2.0</version>
                <type>jar</type>
                <scope>compile</scope>
                <optional>false</optional>
            </dependency>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.asm</artifactId>
                <version>2.7.0</version>
                <type>jar</type>
                <scope>compile</scope>
                <optional>false</optional>
            </dependency>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.antlr</artifactId>
                <version>2.7.0</version>
                <type>jar</type>
                <scope>compile</scope>
                <optional>false</optional>
            </dependency>
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.json</artifactId>
                <version>1.0.4</version>
                <type>jar</type>
                <scope>compile</scope>
                <optional>false</optional>
            </dependency>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.jpa.jpql</artifactId>
                <version>2.7.0</version>
                <type>jar</type>
                <scope>compile</scope>
                <optional>false</optional>
            </dependency>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.core</artifactId>
                <version>2.7.0</version>
                <type>jar</type>
                <scope>compile</scope>
                <optional>false</optional>
            </dependency>
        </dependencies>
    

    Does not EclipseLink dependency contains implementation for bean validation?

    You can check this link Bean validation