首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UnknownEntityTypeException:无法找到持久化程序

UnknownEntityTypeException:无法找到持久化程序
EN

Stack Overflow用户
提问于 2018-07-25 07:34:32
回答 4查看 12.4K关注 0票数 3

我想把JPA和Spring一起用在野蝇上。我尝试过这种配置:

application.properties:

代码语言:javascript
运行
复制
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

POM档案:

代码语言:javascript
运行
复制
    <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>

配置:

代码语言:javascript
运行
复制
@Configuration
@ComponentScan("org.rest.api.server.*")
public class AppConfig {

    @Bean
    public EntityManager entityManager(EntityManagerFactory emf) {
        return emf.createEntityManager();
    }
}

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

代码语言:javascript
运行
复制
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)

配置实体的正确方法是什么?也许我需要手动绘制地图?

EN

回答 4

Stack Overflow用户

发布于 2020-04-24 03:19:31

当实体没有被拾取,数据库表没有被spring引导自动配置创建或映射时,就会引发此错误。为了解决这个问题,您需要在Spring应用程序类中将@EntityScan(basePackages = {"**entities_package_name"})添加到@SpringBootApplication下面。

代码语言:javascript
运行
复制
package com.bill.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication
@EntityScan( basePackages = {"com.bill.entity"} ) // entities package name
public class BillWebApplication {

    public static void main(String[] args) {
        SpringApplication.run(BillWebApplication.class, args);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2020-12-09 17:57:22

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

票数 2
EN

Stack Overflow用户

发布于 2018-07-25 08:57:35

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

代码语言:javascript
运行
复制
@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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51513289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档