我有这个自定义查询(只是一个简单的例子):
public List<ProdutoEntity> findByDescricaoStartsWithCustom(String desc) {
String query =
"SELECT p FROM ProdutoEntity p WHERE p.descricao LIKE CONCAT(UPPER(:descricao),'%') " +
"AND p.situacao = 'A' ORDER BY p.descricao ASC";
TypedQuery<ProdutoEntity> tpQuery = em.createQuery(query, ProdutoEntity.class);
tpQuery.setParameter("descricao", desc);
return tpQuery.getResultList();
}
如何更改它以返回CompletableFuture并执行异步?
我希望它像这样工作:
public interface ProdutoRepository extends CrudRepository<ProdutoEntity, Integer> {
@Async
CompletableFuture<List<ProdutoEntity>> findByDescricaoStartsWith(
@Param("descricao") String descricao);
}
感谢。
更新:
我这样做了,不确定它是否正确。看起来太简单了。
public CompletableFuture<List<ProdutoEntity>> findByDescricaoStartsWithCustom(String desc) {
CompletableFuture<List<ProdutoEntity>> cf = CompletableFuture.supplyAsync(() -> {
String query =
"SELECT p FROM ProdutoEntity p WHERE p.descricao LIKE CONCAT(UPPER(:descricao),'%') " +
"AND p.situacao = 'A' ORDER BY p.descricao ASC";
TypedQuery<ProdutoEntity> tpQuery = em.createQuery(query, ProdutoEntity.class);
tpQuery.setParameter("descricao", desc);
return tpQuery.getResultList();
});
return cf;
}