Spring Boot-找不到EntityManagerFactory

时间:2018-08-09 05:56:38

标签: java spring

我知道这个问题在SO上已经问了很多遍了,但是我尝试了所有建议,但都没有奏效。

我想创建一个REST控制器和一个数据源以连接到mysql数据库实例。但是,当我启动Spring Boot应用程序时,出现此错误:

@EnableJPARepositories添加到数据源配置类时,错误更改为:

Consider defining a bean of type 'com.boot.myproject.investment.repository.MyRepository' in your configuration.

这是主要类别:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

控制器:

public class MyController {
    @Autowired
    private MyRepository repo;

    //....
}

我的数据源配置类:

@Configuration
public class DatasourceConfiguration {
    @Bean
    @ConfigurationProperties("app.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

application.properties

app.datasource.url=jdbc:mysql://localhost:3306/myAppDB
app.datasource.driver-class-name=com.mysql.jdbc.Driver
app.datasource.username=root
app.datasource.password=

实体:

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

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private long id;

}

存储库:

@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
}

build.gradle依赖项:

dependencies {
    testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.0.4.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.4.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '5.0.8.RELEASE'
    compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.5.0'
    compile group: 'javax.persistence', name: 'javax.persistence-api', version: '2.2'
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1' 
    compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.0.9.RELEASE'
    compile group: 'mysql', name: 'mysql-connector-java', version:'5.1.44'  
}

我尝试了几种不同的方法:

  1. 我尝试从CL(./gradlew --refresh-dependencies)和eclipse中刷新项目。
  2. 确保我的gradle中没有休眠相关的依赖项
  3. 尝试使用BasicDataSource而不是DataSource

    BasicDataSource basicDataSource =新的BasicDataSource();

  4. 尝试使用@Transactional而不是@Repository来注释存储库类,尽管我认为这没有关系。

我想知道我的配置出了什么问题,它给了我这种错误。

1 个答案:

答案 0 :(得分:0)

我有一个非常配置,唯一的区别是我的LocalContainerEntitymanagerFactoryBean中有一个DatasourceConfiguration

除了其他注释外,添加以下内容:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory( DataSource dataSource )
{
    LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
    entityManagerFactory.setDataSource( dataSource );
    entityManagerFactory.setPackagesToScan( MyEntity.class.getPackage().getName() );
    entityManagerFactory.setJpaVendorAdapter( new HibernateJpaVendorAdapter() );
    return entityManagerFactory;
}