【问题标题】:Where should define Entity model class in spring boot在春季启动中应该在哪里定义实体模型类
【发布时间】:2016-05-25 06:00:18
【问题描述】:

我穿着一个基于 java 的应用程序并使用 Spring Boot

这是模型:

@Entity
@Table(name = "task_list")
public class Task implements Serializable 

这是 Spring boot 用来启动的 Config 类:

@Configuration
@EnableAutoConfiguration
@EnableJpaRepositories
@EnableTransactionManagement
@ComponentScan(basePackages = {"controller", "dao", "service"})
class Config {


    @Bean(name = "dataSource")
    public DataSource dataSource() {
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        return builder.setType(EmbeddedDatabaseType.HSQL).build();
    }

    @Bean(name = "entityManager")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setDatabase(Database.HSQL);
        vendorAdapter.setGenerateDdl(true);

        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setPackagesToScan(getClass().getPackage().getName());
        factory.setDataSource(dataSource());

        return factory;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new JpaTransactionManager();
    }

这是应用程序:

@SpringBootApplication()
public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Config.class);

    }
}

所以当我运行应用程序时,它会工作并创建所有 bean 但 当我想与数据库交互时,Hibernate 得到了这个错误

org.hibernate.MappingException: Unknown entity: model.Task

我认为这是因为没有任何persistence.xml 来映射 模型类,

那么我应该在 Spring Boot 应用程序中做什么? 应该把那个xml放在哪里? 是否有任何注释告诉 Spring Boot 映射模型类?

提前致谢。

【问题讨论】:

标签: java spring hibernate spring-boot


【解决方案1】:

感谢 Xtreme Biker,我解决了这个问题

我只是在LocalContainerEntityManagerFactoryBean中添加模型包。

@Bean(name = "entityManager")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setDatabase(Database.HSQL);
        vendorAdapter.setGenerateDdl(true);

        LocalContainerEntityManagerFactoryBean factory = new     LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setPackagesToScan("model");
        factory.setDataSource(dataSource());

        return factory;
    }

【讨论】:

  • 您甚至不需要创建实体管理器。您只需要 spring 存储库接口并在那里定义实体。然后你在一些服务逻辑中添加存储库,瞧,数据库处理非常快速和简单。
猜你喜欢
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
相关资源
最近更新 更多