Issue
I'm new to Spring WebFlux reactive. I use R2DBC postgresql. I have a repository like that:
public interface BookRepository extends ReactiveCrudRepository<Book, Long> {
}
Now I want to add custom method to query by many complicated conditions:
public interface CustomBookRepository extends BookRepository {
Flux<Book> findByVeryComplicatedCondition(MyCriteriaDto criteria);
}
My implementation:
public class CustomBookRepositoryImpl extends CustomBookRepository {
//How to get it?
EntityManager em;
@Override
public Flux<Book> findByVeryComplicatedCondition(MyCriteriaDto criteria) {
Query query = em.createQuery("SELECT b from Book b WHERE (VERY COMPLICATED CONDITIONS)");
//What next?
}
}
My questions are in the code above:
- How to obtain an EntityManager?
- How to get Flux from HQL query I built?
When I ask these questions, I mean "How to do this with Spring reactive/r2dbc way", not "How to do this normal way with JDBC"
Solution
If you want to use Hibernate/JPA JPQL like query in your project, consider Hibernate Reactive.
I have written a article to describe how to use Hibernate Reactive with Spring.
- Spring Data has no plan to integrate Hibernate Reactive, so there is no
Repository
support. - Hibernate Reactive depends on Vertx reactive drivers, it does not support R2dbc.
- HibernateReactive supports another ReactiveStreams implemetnation from Redhat - Smallrye Munity.
Answered By - Hantsy
Answer Checked By - David Goodson (JavaFixing Volunteer)