我有以下实体:
@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。可能是什么原因?
它返回 TupleBackedMap 是件好事。使用流我可以得到像这样的 num 和 zone :
findAllUserZones().stream().collect(Collectors.toMap(UserDtoProjection ::getNum, UserDtoProjection ::getZone, (a, b) -> b));