UnknownEntityTypeException:无法找到持久化器

Pet*_*zov 7 java spring jpa spring-data-jpa

我想在 Wildfly 上使用 JPA 和 Spring。我尝试了这个配置:

应用程序属性:

spring.jmx.enabled=false
spring.datasource.jndi-name=java:/global/production
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.show-sql = true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
spring.jpa.hibernate.ddl-auto = create-drop
Run Code Online (Sandbox Code Playgroud)

POM 文件:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath />
    </parent>

    <dependencies>   
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jaxb-annotations</artifactId>
            <version>2.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>                
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>       
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>
Run Code Online (Sandbox Code Playgroud)

配置:

@Configuration
@ComponentScan("org.rest.api.server.*")
public class AppConfig {

    @Bean
    public EntityManager entityManager(EntityManagerFactory emf) {
        return emf.createEntityManager();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行查询时,我得到:

Caused by: org.hibernate.UnknownEntityTypeException: Unable to locate persister: org.rest.api.server.repository.Terminals
10:28:27,539 ERROR [stderr] (default task-1)    at org.hibernate.metamodel.internal.MetamodelImpl.locateEntityPersister(MetamodelImpl.java:642)
Run Code Online (Sandbox Code Playgroud)

配置实体的正确方法是什么?也许我需要手动映射它?

Kar*_*olR 5

当您的 persistence.xml 文件缺少您尝试使用的某些实体时,可能会出现此错误。


Mat*_*Mat 1

这就是我配置实体管理器的方式。您传递的 dataSource 是配置中的另一个 bean。你可以看看BasicDataSource。

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource);
    em.setJpaDialect(new HibernateJpaDialect());
    em.setPackagesToScan("org.rest.api.server.folder");
    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); // JPA implementation
    em.setJpaVendorAdapter(vendorAdapter);
    return em;
}
Run Code Online (Sandbox Code Playgroud)