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()")
有没有办法通过 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()")