Próbowałem zrestrukturyzować projekt java, przesuwając submodules na osobne projekty wdrożone w naszym wewnętrznym repozytorium maven (archiva).UnknownEntityTypeException w fasoli od Mavena
Klasy od submodułów są następujące:
org.example.srv.DomainUser
org.example.srv.DomainUserBean //entity manager
org.example.srv.UserGroup
org.example.srv.UserGroupBean //entity manager
To działa dobrze, gdy pliki źródłowe są kopiowane do odpowiedniego folderu pakietu wewnątrz głównego projektu serwera backend, ale kiedy usunąć pliki źródłowe z projekt serwera backend i ciągnąć ten sam kod w postaci uzależnienia maven, pojawia się następujący błąd przy próbie dostępu do bazy danych:
org.hibernate.UnknownEntityTypeException: Unable to locate persister: org.example.srv.DomainUser
Trwałość XML dla projektu serwera backend:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="loginserver">
<properties>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
Mogę sobie tylko wyobrazić, że ma to coś wspólnego z odkryciem fasoli, gdy projekty są oddzielne, ale jestem naprawdę zakłopotany i byłoby świetnie rozdzielić te projekty przy minimalnym obciążeniu konfiguracyjnym.
główna pom.xml projektu serwer:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example.srv</groupId>
<artifactId>loginserver</artifactId>
<version>0.0.2-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>authobjects</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>loginserver</finalName>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
</project>
Auth Przedmioty pom.xml (projekt ten zawiera również kod ORM dla klas, w tym JPQL budowniczych rachunku, itp):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<pj.gid>org.example</pj.gid>
<pj.aid>authobjects</pj.aid>
<pj.ver>1.0.2-SNAPSHOT</pj.ver>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<groupId>${pj.gid}</groupId>
<artifactId>${pj.aid}</artifactId>
<version>${pj.ver}</version>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>ent.tnp.utils</groupId>
<artifactId>genericentityejb</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
<version>1.0-beta-2</version>
</extension>
</extensions>
</build>
<distributionManagement>
<repository>
<id>internal</id>
<url>http://archiva.tnp.in/repository/internal/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://archiva.tnp.in/repository/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>internal</id>
<name>Archiva Managed Internal Repository</name>
<url>http://archiva.tnp.in/repository/internal/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>snapshots</id>
<name>Archiva Managed Snapshot Repository</name>
<url>http://archiva.tnp.in/repository/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>internal</id>
<name>Archiva Managed Internal Repository</name>
<url>http://archiva.tnp.in/repository/internal/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>snapshots</id>
<name>Archiva Managed Snapshot Repository</name>
<url>http://archiva.tnp.in/repository/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
Wyjaśnienie: genericentityejb jest klasą abstrakcyjną zaprojektowaną do komponowania zapytań JPQL i zarządzania zapytaniami do bazy danych dla jednostki JPA. Projekt authobjects rozszerza go raz dla każdej z encji, które zawiera, aby zapewnić trwałość każdej z tych jednostek.
W jaki sposób? dodać trwałe klasy do konfiguracji Hibernacji? –
Skonfigurowałem je do automatycznego wykrywania przez okno ustawień JPA w JBoss Developer Studio (w oparciu o eclipse). Wciąż jestem nowy w JPA/Hibernte. Dodanie ' false exclude-unlisted-classes>' do persistence.xml projektu z materiałem JPA również nie pomaga. –
KG6ZVP
To wydaje się bardziej problem z maven/archiva. Czy twoja zależność 'SNAPSHOT'?Czy ** najnowsza ** kompilacja została poprawnie wdrożona w archiwum? Czy są jakieś ostrzeżenia MD5? Czy sprawdziłeś, czy jest ono poprawnie pobrane i spakowane? Czy główny moduł to WAR/EAR? Pokazanie obu POM powinno pomóc. –