IntelliJ IDEA - konflikt nazw persistence unit

0

Cześć,

mam problem z uruchomieniem aplikacji Spring'owej ze względu na konflikty nazw persistence unit.

Mam aplikację, która korzysta z bazy danych, a w zależnościach ma inny projekt, który też korzysta z bazy danych - child.
Przy próbie uruchomienia aplikacji przy pomocy IntelliJ IDEA dostaje błąd:

Caused by: java.lang.IllegalStateException: Conflicting persistence unit definitions for name 'my-persistence-unit': file:/C:/Users/User/.m2/repository/com/child/0.1.0/child-0.1.0.jar, file:/C:/Repositories/Applications/child/target/classes

Wygląda na to że IntelliJ przeszukuje dwa razy ten sam jar i znajduję dwa razy tak samo nazwany persistence unit. Jeżeli po zbudowaniu projektu child usunę jego jar z katalogu maven m2 to wszystko działa.
Gdy uruchomię to z konsoli przy pomocy java -jar tez wszytko działa

0

Może IntelliJ coś przykeszował. Spróbuj zrobić cleana, skasuj plik .idea i otwórz projekt na nowo. Zbuduj z linii poleceń, zakręć śmigłem w zakładce Maven i powinno być dobrze. Ewentualnie wejdź w ustawienia projektu i zobacz czy przypadkiem nie zaczytuje czegoś nadmiarowo.

0

Raczej nie ma takiej opcji, żeby coś zkeszował.
Sprawdzałem to nawet na innym kompie aby mięc stuprocentową pewność.

Sprawdziłem tez zależności i zaczytuje ten projekt child tylko raz.

0

@janiu, i w obu przypadkach nazwałeś PU tak samo. Java ładując klasy projektu i klasy zależności nie rozróżnia, co skąd przyszło. W efekcie po uruchomieniu aplikacji masz dwa tak samo nazywające się PU w tym samym kontekście. Zmień nazwę PU w swoim kodzie i zobacz, co się stanie.

BTW, nie powinno się tak projektować dostępu, do bazy. Dwa osobne PU wskazujące na ten sam zasób, aż proszą się o problemy z widocznością danych w transakcjach.

0

@Koziołek: tylko własnie z tego co mi się wydaje mam tylko jeden persistence.xml w którym jest jeden persistence unit właśnie w tym module child , dlatego przy uruchomieniu jar'a z konsoli jest uruchomiany tylko mój główny projekt w który w środku ma jako zależność child i wszystko działa.

Problem pojawia się bo przy uruchomieniu przez IntelliJ ten sam persistence unit jest ładowany dwa razy, nie do końca wiem dlaczego.

0

I wszystko jest OK, bo IntelliJ dwa razy ciągnie twojego jara z zależnościami. Ctrl+alt+Shift+s i w modules sprawdź zakładkę dependency. Możliwe, że masz swój child jako zależność na poziomie modułów jak i ładowaną z mavena czy czegoś takiego :D

0

Masz racje. Dokładnie jest to tam dwa razy.

Czy da się to jakoś wyłączyć, żeby było to ładowane tylko z jednego miejsca.
Da się z poziomu Ctrl+alt+Shift+s usunąć, tylko wtedy po reimporcie znowu się tam pojawi, dlatego czy się to ustawić jakoś permanentnie np w pom.xml?

0

Zamiast na poziomie mavena zmień ustawienia na poziomie zależności pomiędzy modułami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1