On 28/12/22 10:44, Romain Manni-Bucau wrote:
A bit from memory so can miss a few details but think adding openjpa with
jakarta classifier as a dependency of the plugin does the trick.

That's correct, thank you.

Again, FTR:

        <plugin>
          <groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
          <version>${openjpa.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.openjpa</groupId>
              <artifactId>openjpa</artifactId>
              <version>${openjpa.version}</version>
              <classifier>jakarta</classifier>
            </dependency>
            <dependency>
              <groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
              <version>3.1.0</version>
            </dependency>
            <dependency>
              <groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
              <version>2.0.1</version>
            </dependency>
          </dependencies>
        </plugin>

Regards.

Le mer. 28 déc. 2022 à 10:40, Francesco Chicchiriccò <ilgro...@apache.org>
a écrit :

Thank you.

FTR this is my current setup:

root pom.xml:

        <dependency>
          <groupId>org.apache.openjpa</groupId>
          <artifactId>openjpa</artifactId>
          <version>${openjpa.version}</version>
          <classifier>jakarta</classifier>
          <exclusions>
            <exclusion>
              <groupId>org.apache.xbean</groupId>
              <artifactId>xbean-asm9-shaded</artifactId>
            </exclusion>
            <exclusion>
              <groupId>org.apache.commons</groupId>
              <artifactId>commons-pool2</artifactId>
            </exclusion>
            <exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_2.2_spec</artifactId>
            </exclusion>
            <exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
            </exclusion>
            <exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
            </exclusion>
          </exclusions>
        </dependency>

core/persistence-jpa/pom.xml:

      <dependency>
        <groupId>jakarta.persistence</groupId>
        <artifactId>jakarta.persistence-api</artifactId>
      </dependency>
      <dependency>
        <groupId>jakarta.transaction</groupId>
        <artifactId>jakarta.transaction-api</artifactId>
      </dependency>
      <dependency>
        <groupId>org.apache.openjpa</groupId>
        <artifactId>openjpa</artifactId>
        <classifier>jakarta</classifier>
      </dependency>

I am having issues now with entity enhancement.

I see log messages like as

[BuilderThread 0] openjpa.Tool - Enhancer running on type "class
org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttr".

but afterwards:

[BuilderThread 0] openjpa.Tool - No metadata was found for 134 classes;
they have been enhanced as persistence-aware. If you intended for any of
these classes to be persistence-capable, then this means that OpenJPA could
not find any metadata for those classes.

I guess this is because of the namespace mismatch between
openjpa-maven-plugin and the openjpa dependency as declared above.

Regards.

On 28/12/22 08:52, Romain Manni-Bucau wrote:
Use

https://repo.maven.apache.org/maven2/org/apache/openjpa/openjpa/3.2.2/openjpa-3.2.2-jakarta.jar
and exclude transitive deps.

Le mer. 28 déc. 2022 à 08:45, Francesco Chicchiriccò <
ilgro...@apache.org>
a écrit :

On 27/12/22 17:14, Romain Manni-Bucau wrote:
Yes, think you should either move to openjpa-all shade or generate the
class with asm at build time (guess switching the main dep is easier).
Unfortunately just switching to openjpa-all does not change the errors I
am reporting below.

When I look inside



https://repo1.maven.org/maven2/org/apache/openjpa/openjpa-all/3.2.2/openjpa-all-3.2.2.jar
what should I be able to see exactly? e.g. what would be the effect of
the
relocation settings in

https://github.com/apache/openjpa/blob/master/openjpa/pom.xml#L100

?

In case this option is not viable: would you be able to suggest how to
proceed with asm-based alternative you are mentioning above?
TIA.

Regards.

Le mar. 27 déc. 2022 à 17:06, Maxim Solodovnik <solomax...@gmail.com>
a
écrit :

Sorry fir top-posting

Maybe we shall release Jakarta version?
As 4.x for ex?

from mobile (sorry for typos ;)


On Tue, Dec 27, 2022, 23:01 Francesco Chicchiriccò <
ilgro...@apache.org
wrote:

On 27/12/22 16:50, Romain Manni-Bucau wrote:
Hi,

Well I guess the jakarta shade should handle jakarta properly else
user
can
use what he wants and finally worse case you can still integrate the
mapping in spring glue code (not sure you have something particular
in
mind
so shouting in the wind ;)).
For instance, I would like to keep these classes [1] working, but
when
I
attempt to build it, I am receiving the following errors:

[ERROR]

/home/ilgrosso/work/syncope/fork/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaDialect.java:[56,55]
cannot access javax.persistence.EntityTransaction
[ERROR]   class file for javax.persistence.EntityTransaction not
found
[ERROR]

/home/ilgrosso/work/syncope/fork/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaDialect.java:[89,34]
no suitable method found for cast(jakarta.persistence.EntityManager)
[ERROR]     method

org.apache.openjpa.persistence.OpenJPAPersistence.cast(javax.persistence.EntityManagerFactory)
is not applicable
[ERROR]       (argument mismatch; jakarta.persistence.EntityManager
cannot
be converted to javax.persistence.EntityManagerFactory)
[ERROR]     method

org.apache.openjpa.persistence.OpenJPAPersistence.cast(javax.persistence.EntityManager)
is not applicable
[ERROR]       (argument mismatch; jakarta.persistence.EntityManager
cannot
be converted to javax.persistence.EntityManager)
[ERROR]     method

org.apache.openjpa.persistence.OpenJPAPersistence.cast(javax.persistence.Query)
is not applicable
[ERROR]       (argument mismatch; jakarta.persistence.EntityManager
cannot
be converted to javax.persistence.Query)
[ERROR]

/home/ilgrosso/work/syncope/fork/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java:[46,61]
cannot access javax.persistence.spi.PersistenceProvider
[ERROR]   class file for javax.persistence.spi.PersistenceProvider
not
found
[ERROR]

/home/ilgrosso/work/syncope/fork/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java:[122,46]
incompatible types:

java.lang.Class<org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI>
cannot be converted to java.lang.Class<? extends
jakarta.persistence.EntityManagerFactory>
[ERROR]

/home/ilgrosso/work/syncope/fork/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java:[127,39]
incompatible types:

java.lang.Class<org.apache.openjpa.persistence.OpenJPAEntityManagerSPI>
cannot be converted to java.lang.Class<? extends
jakarta.persistence.EntityManager>

Given Maxim's and yours answer about openjpa-all, I believe I'll need
to
either depend on that or shade OpenJPA artifacts right on Syncope
poms:
correct?

Regards.

[1]

https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor
Le mar. 27 déc. 2022 à 16:21, Francesco Chicchiriccò <
ilgro...@apache.org>
a écrit :

Hi all,
so let's suppone one has the weird idea of adding OpenJPA to a
Spring
Boot
3 project.

Do we already an idea about how to handle the javax.persistence.*
Vs
jakarta.persistence.* conflicts?

Thanks in advance.
Regards.

--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to