2017-09-29 2 views
0

J'ai essayé quelques solutions à partir d'autres questions, mais aucune d'elles n'a résolu le problème.Spring jpa L'entité n'est pas un type géré

Les typos ne devraient pas être le problème puisque mon ide met en évidence les noms de paquets correctement.

Voici ma configuration:

Entité:

package sh.owl.hootament.backend.database.entities; 

@Entity 
@Table(name = "Creators") 
public class CreatorEntity {  
    @Id 
    @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid2") 
    private String id; 

    @Column 
    private String username; 

    @Column 
    private String email; 

    // Getters and settters 
    [...] 
} 

Repository:

package sh.owl.hootament.backend.database.repositories; 

@EnableAutoConfiguration 
@RepositoryRestResource(path = "creators") 
public interface CreatorEntityRepository extends JpaRepository<CreatorEntity, String> { 
} 

Classe Configuration:

@Configuration 
@EnableSpringConfigured 
@EnableJpaRepositories(basePackages = "sh.owl.hootament.backend.database.repositories") 
@EntityScan(basePackages = "sh.owl.hootament.backend.database.entities") 
@ComponentScan("sh.owl.hootament.*") 
public class SpringConfiguration { 
} 

Controller Index test:

@Controller 
public class IndexController { 
    @Autowired 
    private CreatorEntityRepository creatorEntityRepository; 

    @GetMapping("/") 
    public String index(Model model) { 
     creatorEntityRepository.saveAndFlush(new CreatorEntity()); 
    } 
} 

Et plante printemps avec l'erreur suivante:

Caused by: java.lang.IllegalArgumentException: Not a managed type: class sh.owl.hootament.backend.database.entities.CreatorEntity 
    at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:210) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:70) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:68) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:153) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:100) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:82) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:199) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:277) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:263) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:101) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    ... 34 common frames omitted 

Modifier, a ajouté le fichier gradle:

buildscript { 
ext { 
    springBootVersion = '1.5.7.RELEASE' 
} 
repositories { 
    mavenCentral() 
} 
dependencies { 
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
} 
} 

apply plugin: 'java' 
apply plugin: 'org.springframework.boot' 

dependencies { 
compile('org.springframework.boot:spring-boot-starter-actuator') 
compile('org.springframework.boot:spring-boot-starter-data-jpa') 
compile('org.springframework.boot:spring-boot-starter-data-rest') 
compile('org.springframework.data:spring-data-rest-hal-browser') 
compile('org.springframework.boot:spring-boot-starter-jdbc') 
compile('org.springframework.boot:spring-boot-starter-security') 
compile('org.springframework.session:spring-session') 
compile('org.springframework.boot:spring-boot-starter-thymeleaf') 
compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity4:2.1.3.RELEASE") 

compile('org.springframework.boot:spring-boot-starter-web') 
runtime('org.springframework.boot:spring-boot-devtools') 
runtime('mysql:mysql-connector-java') 

testCompile('org.springframework.boot:spring-boot-starter-test') 
testCompile('org.springframework.security:spring-security-test') 
} 
+0

Vérifiez les fautes de frappe. – Antoniossss

+0

@Entity .. quel est le paquet? –

+0

Le nom du package est: sh.owl.hootament.backend.database.entities; – Lyze

Répondre

0

Apparemment, je avais juste besoin de réindexer toutes les bibliothèques, car il n'a pas pu trouver javax.persistence.Entity et utilisé l'hibernation à la place.

0

Je ne peux pas voir @SpringBootApplication sur la classe Config.

Si vous avez une autre classe avec la méthode principale et @SpringBootApplication.

Essayez de déplacer @EnableJpaRepositories et @EntityScan sur votre classe principale.

Sinon, si votre classe Config est la classe principale ajouter @SpringBootApplication sur elle