Spring 数据投影返回 TupleBackedMap 而不是真实结果

问题描述 投票:0回答:1

我有以下实体:

@Entity
@Data
public class User {

    @Id
    private Long id;

    private String num;

    @OneToOne
    @JoinColumn(name = "group_id", referencedColumnName = "id")
    private Group group;
}

@Entity
@Data
public class Group {

    @Id
    private Long id;

    private String zone;
}

我想使用 spring data jpa 投影检索所有用户及其区域: 这是我的投影课:

public interface UserDtoProjection {

    String getNum();

    String getZone();
}

这是我的询问:

@Query(value = "SELECT u.num as num, g.zone as zone FROM \"user\" u join \"group\" g on u.group_id = g.id", nativeQuery = true)
    List<UserDtoProjection> findAllUserZones();

但它不返回实际的 UserDtoProjection 对象,而是 TupleBackedMap。可能是什么原因?

spring-boot spring-data-jpa
1个回答
0
投票

它返回 TupleBackedMap 是件好事。使用流我可以得到像这样的 num 和 zone :

findAllUserZones().stream().collect(Collectors.toMap(UserDtoProjection ::getNum, UserDtoProjection ::getZone, (a, b) -> b));
© www.soinside.com 2019 - 2024. All rights reserved.