Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自动关联Crudepository实现的实例_Java_Spring - Fatal编程技术网

Java 如何自动关联Crudepository实现的实例

Java 如何自动关联Crudepository实现的实例,java,spring,Java,Spring,我用Spring Boot构建了一个应用程序。主类看起来像这样 @Configuration @ComponentScan @EnableAutoConfiguration public class TheApplication { public static void main(String[] args) { SpringApplication.run(TheApplication.class, args); } } 然后我有一个定义存储库的接口 pack

我用Spring Boot构建了一个应用程序。主类看起来像这样

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class TheApplication {

    public static void main(String[] args) {
        SpringApplication.run(TheApplication.class, args);
    }
}
然后我有一个定义存储库的接口

package com.application.repositories

@Repository
public interface InstrumentRepository extends CrudRepository<Instrument, String> {

    public List<Instrument> findByPartnerAndUid(Partner partner, String uid);
}
AccountService类:

public class AccountService {
    @Autowired
    private InstrumentRepository instrumentRepository;

    Collection<Instrument> getAllAccountInstrument(accountId) {
        this. instrumentRepository.findAllInstrumentByAccountId(accountId);
    }
}

编辑

这是我的数据库配置 应用程序属性

# Database
spring.datasource.url= jdbc:postgresql://localhost:5432/appdb
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=create
hbm2ddl.auto = create
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.show_sql = true
hibernate.properties

# Database
spring.datasource.url= jdbc:postgresql://localhost:5432/appdb
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=create
hbm2ddl.auto = create
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.show_sql = true

Config类中缺少完整的DB配置。 请尝试以下示例:

@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.hsqldb.jdbc.JDBCDriver");
dataSource.setUrl("jdbc:hsqldb:mem:testdb");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}

@Bean
public EntityManager entityManager() {
return entityManagerFactory().getObject().createEntityManager();
}

@Bean
 public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
 LocalContainerEntityManagerFactoryBean em = new     LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("package.where.your.entites.like.CustSys.are.stored");
return em;
 }

根据

如果使用spring boot,则必须在application.properties文件中添加数据库配置

例如mysql

spring.datasource.url=jdbc:mysql://localhost/yourdatabaseName
spring.datasource.username=youruserName
spring.datasource.password=yourPassword
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
这里是所有的财产

是的,我做到了。正如我所说,在第一个“上下文”中,创建了
instrumentRepository
bean。@ImportResource(“classpath:account.xml”)添加这个注释AccountRestController classHmm。。使用
新的ClassPathXmlApplicationContext(“account.xml”)
有什么区别?我已经试过了
@ImportResource
。现在的错误是,“必须至少存在一个JPA元模型!”。我是否可以从全局配置中重用
entityManagerFactory
?在我的例子中,
InstrumentRestController
上的存储库连接成功。未明确定义
entityManagerFactory
。使用
ClassPathXmlApplicationContext
时,似乎必须加载或定义配置。我想不是指EntityManagerFactory,我已经在属性文件中定义了我的DB配置。我担心的是,在没有定义DB配置的情况下,spring的“自动配置”似乎已经管理了它。但是,当使用
ClassPathXmlApplicationContext
时,必须定义与上面类似的DB配置。那么,如何使用
ClassPathXmlApplicationContext
使用“自动”配置呢?我编辑了@Abdelhak这个问题。请注意,我的问题只是缺少配置,而不是应用程序。
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.hsqldb.jdbc.JDBCDriver");
dataSource.setUrl("jdbc:hsqldb:mem:testdb");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}

@Bean
public EntityManager entityManager() {
return entityManagerFactory().getObject().createEntityManager();
}

@Bean
 public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
 LocalContainerEntityManagerFactoryBean em = new     LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("package.where.your.entites.like.CustSys.are.stored");
return em;
 }
spring.datasource.url=jdbc:mysql://localhost/yourdatabaseName
spring.datasource.username=youruserName
spring.datasource.password=yourPassword
spring.datasource.driver-class-name=com.mysql.jdbc.Driver