1

以下のコードでは、リポジトリでの取得および更新操作は正常に機能します。ただし、保存操作はデータをテーブルに永続化していません。自分でリポジトリを実装するとうまくいきます。ReactiveCrudRepository を拡張するインターフェースに置き換えた後、この問題が始まりました。何か不足していますか?

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

}

@Data
@AllArgsConstructor
@NoArgsConstructor
@Table("store")
class Store {

@Id
private String id;

private String name;

private String description;

}

interface StoreRepository extends ReactiveCrudRepository<Store, String> {
}

@Configuration
@EnableR2dbcRepositories
class R2dbcConfiguration extends AbstractR2dbcConfiguration {

private final ConnectionFactory connectionFactory;



   R2dbcConfiguration(ConnectionFactory connectionFactory) {
        this.connectionFactory = connectionFactory;
    }

    @Override
    public ConnectionFactory connectionFactory() {
        return this.connectionFactory;
    }
}


@Configuration
class ConnectionFactoryConfiguration {

@Bean
ConnectionFactory connectionFactory() {
    PostgresqlConnectionConfiguration config = PostgresqlConnectionConfiguration.builder()
            .host("localhost")
            .port(5433)
            .database("testdb")
            .username("postgres")
            .password("root")
            .build();
    return new PostgresqlConnectionFactory(config);
}

}

コードは次のようにテストされます。

@SpringBootTest
@RunWith(SpringRunner.class)

public class StoreRepositoryTest {
@Autowired
private StoreRepository repository;

@Test
public void all() {

    Flux<Store> storeFlux = Flux.just(new Store("1", "a1", "a1"), new Store("2", "a2", "a2"))
            .flatMap(store -> repository.save(store));

    StepVerifier
            .create(storeFlux)
            .expectNextCount(2)
            .verifyComplete();

    Flux<Store> all = repository.findAll();

    StepVerifier
            .create(all)
            .expectNextCount(2)
            .verifyComplete();

}

}
4

3 に答える 3