Je veux insérer des données SQL lorsque j'exécute cette configuration de source de données, mais je ne peux pas obtenir les données dans ma classe de test. Cela fonctionne si je crée les données d'abord à l'intérieur de la classe de test et que je l'obtiens.Hsqldb n'est pas rempli avec des données
@Configuration
@EnableJpaRepositories("se.system.repository")
public class DBConfig{
@Bean(name = "hsqldb")
public DataSource InMemoryDataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase database = builder
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:se/system/sql/create-db.sql")
.setName("database")
.build();
return database;
}
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory factory) {
return new JpaTransactionManager(factory);
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setDatabase(Database.HSQL);
adapter.setShowSql(false);
adapter.setGenerateDdl(true);
return adapter;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setDataSource(InMemoryDataSource());
factory.setJpaVendorAdapter(jpaVendorAdapter());
factory.setPackagesToScan("se.system.model");
return factory;
}
@Bean
public ResourceDatabasePopulator databasePopulator() {
ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.setSqlScriptEncoding("UTF-8");
populator.addScript(new ClassPathResource("se/system/sql/insert-data.sql"));
return populator;
}
@Bean
public InitializingBean populatorExecutor() {
return() -> DatabasePopulatorUtils.execute(databasePopulator(), InMemoryDataSource());
}
l'intérieur d'un testclass:
@BeforeClass
public static void setUp() throws ServiceException {
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
context.scan("se.system");
context.refresh();
userService = context.getBean(UserService.class);
System.out.println(userService.getUserById(1L));
}
Maintenant, je reçois cette erreur: « utilisateur n'a pas le privilège ou objet non trouvé: Utilisateur "Après avoir essayé de remplir avec un utilisateur, je devine que la mémoire de données ne conserve pas les données lorsque j'essaie d'exécuter le test – T3rraform