如何在spring-data-jpa中进行投影

时间:2019-06-23 00:53:46

标签: java jpa spring-data-jpa

我正在使用@Query,并得到如下结果:[16315551234, 11111111111] 该结果来自数据类型为String的列,我试图通过For和forEach循环,但得到错误, 因为无法将数据类型强制转换为我拥有的域

如何为@Query的结果循环正确的方式? 我是Java的新手,我真的很想对此进行解释:)

我的查询:

@Query("SELECT DISTINCT W.whatsappid FROM WhatsappChat W")
List<WhatsappChat> findAllContact();

在我的@Service上

List<WhatsappChat> resultPerKey = whatsappChatRepository.findAllContact();

当我记录结果时:像这样==> [16315551234, 11111111111]

WhatsappChat is my @Entity / domain

1 个答案:

答案 0 :(得分:1)

问题是您获取实体的ID,但希望实体处于循环中。

您需要以字符串列表的形式获取查询结果。

但是正确的查询是:

@Query("SELECT DISTINCT W.whatsappid  FROM WhatsappChat W")
List<String> findAllContact();

要遍历列表,您可以执行以下操作:

List<String> ids = respoitory.findAllContact();
ids.forEach(new Consumer<String>() {
  @Override
  public void accept(String s) {
    //use String
  }
});