Java 如何自动关联Crudepository实现的实例
我用Spring Boot构建了一个应用程序。主类看起来像这样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
@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