Mam moduł A i moduł B, które mają przypisane klasy JPA. Moduł B ma testów jednostkowych, które ciągnie się kilka tych podmiotów z A. Oba moduły skompilować porządku, Zależności uruchomieniowe są OK, ale pojawia się następujący komunikat o błędzie, gdy próbuję uruchomić test Jednostka:Jak skonfigurować hibernację do skanowania w poszukiwaniu obiektów w innym module?
java.lang.IllegalArgumentException: Unknown entity: MyClassHere
Caused by: org.hibernate.MappingException: Unknown entity: MyClassHere
To występuje w wywołaniu EntityManager.merge.
Ponieważ moduł B ma wszystkie pliki konfiguracyjne hibernacji itp., Domyślam się, że po prostu nie odbiera, że moja klasa od A jest jednostką.
Próbowałem dodanie następujących do persistence.xml
<exclude-unlisted-classes>false</exclude-unlisted-classes>
W hibernate.cfg.xml I dodaje:
<property name="packagesToScan">myNamespace.*</property>
Następnie:
<property name="packagesToScan">
<array>
<value>myNamespace.*</value>
</array>
</property>
To dało mi błąd treść "właściwości" musi być równa zeru. Następnie próbowałem:
<mapping class="myNamespace.*" />
Czego mi brakuje?
Edit: Jedną rzeczą, że zapomniałem wspomnieć, że może być bez znaczenia jest to, że oba moduły są skonfigurowane jako oddzielne projekty (używam zaćmienie), więc struktura katalogów jest inny. Zależności czasu działania są poprawnie skonfigurowane, ale ponieważ pliki .class znajdują się w różnych katalogach, myślę, że hibernacja może ich nie skanować.
Używasz Spring? Mam podobną konfigurację, która działa za pomocą [setPackagesToScan] (http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.html# setPackagesToScan-java.lang.String ...-) zastąpione w [LocalContainerEntityManagerFactoryBean] (http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean .html). –
Czy możesz spróbować z ' myNamespace ' (tj. Bez '. *'): Ta właściwość powinna wskazywać na pakiet macierzysty klas do skanowania. Na przykład. jeśli klasa 'MyEntity' znajduje się w pakiecie' my.package.MyEntity', napiszemy ' my.package ' –
Tunaki
Wypróbowałem, to nie działało ... – ventsyv