Annotation Type NoRepositoryBean This will typically be used when providing an extended base interface for all repositories in combination with a custom repository base class to implement methods declared in that intermediate interface.
@EntityScan annotation is used when entity classes are not placed in the main application package or its sub-packages. In this situation, we would declare the package or list of packages in the main configuration class within @EntityScan annotation.
Spring Data Jpa provides EnableJpaRepositories annotation which is used to scan the packages for configuration and repository class for Spring Data JPA.
spring. jpa. hibernate. ddl-auto (enum) is a Hibernate feature that controls the behavior in a more fine-grained way.
Configure the location of entities using @EntityScan in Spring Boot entry point class.
Update on Sept 2016: For Spring Boot 1.4+:
use org.springframework.boot.autoconfigure.domain.EntityScan
instead of org.springframework.boot.orm.jpa.EntityScan
, as ...boot.orm.jpa.EntityScan is deprecated as of Spring Boot 1.4
Try adding All the following, In my application it is working fine with tomcat
@EnableJpaRepositories("my.package.base.*")
@ComponentScan(basePackages = { "my.package.base.*" })
@EntityScan("my.package.base.*")
I am using spring boot, and when i am using embedded tomcat it was working fine with out @EntityScan("my.package.base.*")
but when I tried to deploy the app to an external tomcat I got not a managed type
error for my entity.
Extra read:
@ComponentScan
is used for scanning all your components those are marked as @Controller, @Service, @Repository, @Component
etc…
where as @EntityScan
is used to scan all your Entities those are marked @Entity
for any configured JPA in your application.
I think replacing @ComponentScan
with @ComponentScan("com.nervy.dialer.domain")
will work.
Edit :
I have added a sample application to demonstrate how to set up a pooled datasource connection with BoneCP.
The application has the same structure with yours. I hope this will help you to resolve your configuration problems
If you configure your own EntityManagerFactory Bean or if you have copy-pasted such a persistence configuration from another project, you must set or adapt the package in EntityManagerFactory's configuration:
@Bean
public EntityManagerFactory entityManagerFactory() throws PropertyVetoException {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory;
factory = new LocalContainerEntityManagerFactoryBean();
factory.setPackagesToScan("!!!!!!package.path.to.entities!!!!!");
//...
}
Be careful of the "multiple" needs, you need a String array as the argument passed to setPackagesToScan (and NOT a comma-separated-single-string value). Below illustrates the issue.
String[] packagesArray = "com.mypackage1,com.mypackage2".split(",");
em.setPackagesToScan(packagesArray);
In my case the problem was due to my forgetting to have annotated my Entity classes with @javax.persistence.Entity
annotation. Doh!
//The class reported as "not a amanaged type"
@javax.persistence.Entity
public class MyEntityClass extends my.base.EntityClass {
....
}
I got this error because I stupidly wrote
public interface FooBarRepository extends CrudRepository<FooBarRepository, Long> { ...
A brief explanation: One typically creates a FooBarRepository class to manage FooBar objects (often representing data in a table called something like foo_bar.) When extending the CrudRepository to create the specialized repository class, one needs to specify the type that's being managed -- in this case, FooBar. What I mistakenly typed, though, was FooBarRepository rather than FooBar. FooBarRepository is not the type (the class) I'm trying to manage with the FooBarRepository. Therefore, the compiler issues this error.
I highlighted the mistaken bit of typing in bold. Delete the highlighted word Repository in my example and the code compiles.
You can use @EntityScan annotation and provide your entity package for scanning all your jpa entities. You can use this annotation on your base application class where you have used @SpringBootApplication annotation.
e.g. @EntityScan("com.test.springboot.demo.entity")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With