当前位置: 首页 > 知识库问答 >
问题:

为什么我的代码抛出一个“bean非托管异常”?

严俊彦
2023-03-14

在我开始添加更多存储库之前,我的代码只使用一个存储库包就可以正常工作

主数据源配置类:

@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"com.example.resource.akademiks.waec.obj.dao",
        "com.example.resource.akademiks.waec.theory.dao", "com.example.resource.akademiks.waec.theory.answer.dao"},
 entityManagerFactoryRef = "akademiksEntityManagerFactory",
 transactionManagerRef = "akademiksTransactionManager")
public class AkademiksDbConfig {
    
    @Bean
    @Primary
    @ConfigurationProperties("spring.datasource.waecakademiks")
    public DataSourceProperties akademiksDataSourceProperties() {
        
        return new DataSourceProperties();
    }
    
    @Primary
    @Bean
    @ConfigurationProperties("spring.datasource.waecakademiks")
    public DataSource akademiksDataSource() {
        
        return akademiksDataSourceProperties().initializeDataSourceBuilder()
                .type(HikariDataSource.class).build();
        
    }
    
    
    @Primary
    @Bean(name = "akademiksEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean 
    akademiksEntityManagerFactory(EntityManagerFactoryBuilder builder) {
        
        return builder
                .dataSource(akademiksDataSource())
                .packages("com.example.resource.akademiks.waec.obj.entity")
                .packages("com.example.resource.akademiks.waec.theory.questions.entity")
                .packages("com.example.resource.akademiks.waec.theory.answer.entity")
                .build();
                
    }
    
    @Primary
    @Bean
    public PlatformTransactionManager akademiksTransactionManager(
            @Qualifier("akademiksEntityManagerFactory")
            LocalContainerEntityManagerFactoryBean akademiksEntityManagerFactory
            ) {
        return new JpaTransactionManager(akademiksEntityManagerFactory.getObject());
    }
    
}

存储库:

package com.example.resource.akademiks.waec.obj.dao;

@Repository
@RepositoryRestResource(collectionResourceRel = "chemistry", path = "chemistry")
public interface WaecChemistryObjRepo extends JpaRepository<WaecChemistryObj, Integer> {

服务层:

 package com.example.resource.akademiks.waec.theory.chemistry.service;

public interface WaecChemistryTheoryService {}

服务实施:

 @Service
   public class WaecChemistryObjServiceImpl implements WaecChemistryObjService {
  @Autowired
 private WaecChemistryObjOptionRepo chemistryOptionRepo;

实体类:

package com.example.resource.akademiks.waec.obj.entity;

@Entity
@Table(name = "WaecChemistryObjAnswer")
public class WaecChemistryObjAnswer {

其他实体和存储库已被排除在外。

共有1个答案

宇文飞羽
2023-03-14

packages方法采用varargs参数:

EntityManagerFactoryBuilder.Builder packages(String... packagesToScan)

您可以调用它3次,而不是在一次调用中传递3个包。

更一般地说:利用自动配置并遵循约定而不是配置方法,如注释中所建议的。

 类似资料:
  • 这是我的申请 数据源:类型:com.zaxxer.hikari.HikariDataSource主要: 这是我的入门: 这是我的例外: 2017-11-21 10:10:33.126线程“main”中的表现:java.lang.运行时异常: java.lang.ClassCastException: 无法将 com.mysql.cj.jdbc.Driver to javax.sql.DataSou

  • 下面是我的代码。当我运行它时,我在线程“main”java.lang.IndexOutOfBoundsException:Index:3、Size:2中得到异常,而不是我的异常消息。谁能解释一下我做错了什么,为什么会这样?谢谢!

  • 编译器知道检查的异常不能在安全方法内抛出-所以也许它应该允许只捕获未检查的异常? 回到主要问题--有没有理由以这种方式实现捕获检查异常?这仅仅是设计中的一个缺陷还是我遗漏了一些重要的因素--也许是向后的不兼容性?在此场景中,如果只允许捕获,可能会出现什么问题?实例非常感谢。

  • 我试图将两个“Employee”对象添加到树集中: 但它引发了一个ClassCastException: 但是如果我只向TreeSet添加一个对象: 或者如果我使用哈希集: 那么它就是成功的。为什么会发生异常,如何修复它?

  • 我想了解为什么一段代码不会抛出NullPointerException。 请考虑以下代码: 方法被重复调用,同时以下代码在单独的线程中运行: 只有一个实例。 从不引发NullPointerException。 但是,当方法暂停时,即使暂停0毫秒,也会按预期引发NullPointerException: 我的理解是,在理论上,在检查和调用之间存在竞争条件。在实践中,如果不引入暂停(即从后续方法调用中

  • 本文向大家介绍.NET中托管和非托管代码之间的区别,包括了.NET中托管和非托管代码之间的区别的使用技巧和注意事项,需要的朋友参考一下 .NET Framework具有CLR(公共语言运行时),可以执行用.NET语言编写的代码。CLR管理内存需求,安全性,代码优化,特定于平台的转换等。在非托管代码的情况下,不存在CLR,并且代码由操作系统直接执行。 以下是托管代码和非托管代码之间的一些重要区别。