Spring 数据投影大小()

Spring Data Projection size()

有没有办法通过 rest api 投影 return 集合的大小?

考虑这个例子:

数据:

@Entity
@Table
public class MyData {
    // id 
    // ...

    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "mydata")
    private final Set<User> users = new HashSet<>();
    // getters/setters ...
}

存储库:

@RepositoryRestResource
public interface MyDataRepository extends PagingAndSortingRepository<MyData, Long> {
}

投影:

@Projection(name = "short", types = {MyData.class})
public interface MyDataProjection {
    // neither of those work
    // @Value("#{target.getUsers().size()}")
    @Value("#{target.users.size()}")
    Integer nrUsers();
}

我想通过 REST api 获取 MyData 对象 return 中的用户数。

例如:my-domain/my-service/mydatas/123/?projection=short

应该return:

{
    "nrUsers": 4;
    ...
}

有可能吗?

命名约定以 "get" 开头,因为投影的属性是方法,而不是字段。所以这有效:

@Value("#{target.users.size()}")
Integer getNrUsers();

(代替之前的"nrUsers()")