2014-04-29 24 views
24

Mam problemy z moimi pierwszymi krokami przy użyciu Spring-Boot with JPA. Zacząłem od całkiem minimalistycznego example from Git używając Gradle.Spring Boot w/JPA: przenieś @Entity na inny pakiet

Teraz po prostu przenoszenie Customer do innej paczki, powiedzmy do hello2, spowoduje powstanie wyjątku Caused by: java.lang.IllegalArgumentException: Not an managed type: class hello2.Customer. Próbowałem dodać

@ComponentScan(basePackageClasses= {Customer.class}) // AND OR @EnableJpaRepositories(basePackageClasses= {Customer.class})

do Application, ale bez powodzenia.

Co robię źle?

Odpowiedz

37

Lokalizacja obiektów w Spring Boot można skonfigurować za pomocą @EntityScan.

Domyślnie @EnableAutoConfiguration umożliwia skanowanie obiektu w pakiecie, w którym jest umieszczone (jeśli nie jest to pakiet domyślny).

+1

Używam tego @SpringBootApplication @EntityScan (wartość = „org.package.spike.entities”) gdzie org.package.spike.entities to pakiet, który zawiera moje klasy podmiot wciąż otrzymuję ten sam problem – Rafael

+0

to kilka lat później, ale ja też dostaję to samo. Próbowałem każdej możliwej konfiguracji, ale nadal otrzymuję komunikat "nie jest zarządzanym typem", włącz @EnableAutoConfiguration i @EntityScan ("mój pakiet") w mojej konfiguracji repozytorium i nadal otrzymuję ten błąd. – wondergoat77

24

Musisz zlokalizować podmioty i repozytoriów pakages za pomocą

@EnableJpaRepositories(basePackages = "your.repositories.pakage") 

@EntityScan(basePackages = "your.entities.pakage") 
+0

Rozwiązało to dla mnie problem. – Phyxx

+0

Brakowało mi @EntityScan, moje jednostki i moje repozyty są w różnych pakietach. Alternatywnie możesz użyć @EntityScan (basePackageClasses = AClassInPackageWhereAllEntitiesAre.class) Dzięki! – Toguard

6

to co pracował dla mnie:

@EnableJpaRepositories(basePackages ={ "package1","package2"}) 
@EntityScan(basePackages ={ "package3","package4"}) 
0

Podając samą lokalizację pakietu (czyli pakiet podstawowy) do poniżej adnotacja pracował dla mnie: -

@SpringBootApplication(scanBasePackages = {"org.ashu.java.*"}) 
@EnableJpaRepositories(basePackages ={ "org.ashu.java.*"})  
@EntityScan(basePackages ={ "org.ashu.java.*"})