I have the below java streams function, but I would like to use a PostgreSQL query instead to retrieve the same information, perform the filter and if possible collect to a list. I would like to write a query in the repo layer such as @Query("") but unsure what to write. Table name is pop_responder and column name is pop_registrants.
public List<PopResponderDao> getAllPopResponders() {
return popResponderRepository
.findAll()
.stream()
.filter(responderDao -> responderDao.getPopRegistrationDaos().isEmpty())
.collect(Collectors.toList());
}
PopRegistrationDaos is of type Collection<PopRegistrationDao>. Repository layer uses JPA:
public interface PopResponderRepository extends JpaRepository<PopResponderDao, Long> {}
CodePudding user response:
There is no support for using stream to interact with database as of now.
If you only need to filter your data you can using JPQL queries.
A filter is basically a WHERE clause in JPQL.
SELECT p FROM PopResponderDao p where p.popRegistrationDaos IS NOT EMPTY
