spring UnknownloadtyTypeException:无法找到persister

bgtovc5b  于 2024-01-05  发布在  Spring
关注(0)|答案(5)|浏览(136)

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

  1. spring.jmx.enabled=false
  2. spring.datasource.jndi-name=java:/global/production
  3. spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
  4. spring.jpa.show-sql = true
  5. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
  6. spring.jpa.hibernate.ddl-auto = create-drop

字符串
POM文件:

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.0.3.RELEASE</version>
  5. <relativePath />
  6. </parent>
  7. <dependencies>
  8. <dependency>
  9. <groupId>com.fasterxml.jackson.module</groupId>
  10. <artifactId>jackson-module-jaxb-annotations</artifactId>
  11. <version>2.9.5</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-web</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-actuator</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.session</groupId>
  27. <artifactId>spring-session-core</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-data-jpa</artifactId>
  32. </dependency>
  33. </dependencies>


配置:

  1. @Configuration
  2. @ComponentScan("org.rest.api.server.*")
  3. public class AppConfig {
  4. @Bean
  5. public EntityManager entityManager(EntityManagerFactory emf) {
  6. return emf.createEntityManager();
  7. }
  8. }


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

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


什么是正确的方式来配置实体?可能我需要手动Map它?

0s0u357o

0s0u357o1#

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

oknwwptz

oknwwptz2#

Sping Boot 自动配置没有拾取实体,也没有创建或Map数据库表时会抛出此错误。为了解决此问题,您需要在Sping Boot 应用程序类中的@SpringBootApplication下面添加@EntityScan(basePackages = {"**entities_package_name"})

  1. package com.bill.app;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.boot.autoconfigure.domain.EntityScan;
  5. @SpringBootApplication
  6. @EntityScan( basePackages = {"com.bill.entity"} ) // entities package name
  7. public class BillWebApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(BillWebApplication.class, args);
  10. }
  11. }

字符串

展开查看全部
3lxsmp7m

3lxsmp7m3#

这是我如何配置一个entityManager。你传递的dataSource是配置中的另一个bean。你可以看看BasicDataSource。

  1. @Bean
  2. public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
  3. LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
  4. em.setDataSource(dataSource);
  5. em.setJpaDialect(new HibernateJpaDialect());
  6. em.setPackagesToScan("org.rest.api.server.folder");
  7. JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); // JPA implementation
  8. em.setJpaVendorAdapter(vendorAdapter);
  9. return em;
  10. }

字符串

mmvthczy

mmvthczy4#

您可以使用@ martyScan()annotation让spring查找marty-classes。
联系我们

k75qkfdt

k75qkfdt5#

我得到了同样的错误。我做的错误是导入javax.persistence.Entity;
我们需要导入jakpersistence.Entity;而不是javax.persistence.Entity;这是因为JPA现在已更改为Jakarta Persistence API,不再是Java Persistence API。

相关问题