def criteria = User.createCriteria()
def users = criteria.list() {
projections {
distinct("username")
}
setResultTransformer(CriteriaSpecification.ROOT_ENTITY)
}
Chỉ cần thay thế setResultTransformer (CriteriaSpecification.ROOT_ENTITY) bằng resultTran sformer (ALIAS_TO_ENTITY_MAP). Bạn sẽ nhận được một danh sách chuỗi như là kết quả
nếu không chỉ cần thay thế .list with .listTính năng và sử dụng không cần phân biệt ("tên người dùng"), chỉ có thể là tài sản ("tên người dùng");
Thông thường mọi người gặp vấn đề với phân trang. không phải kết quả. Nếu bạn đã có một cái gì đó như:
User.createCriteria().list([max:params.max,offset:params.offset],{
createAlias("others", "others", CriteriaSpecification.LEFT_JOIN);
ilike("others.firstName", "%${query}%");
});
Nó có thể dẫn đến trùng lặp hàng. Bởi vì .listDistinct() không hỗ trợ pagination, chỉ cần thêm
resultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
Vì vậy, truy vấn sẽ trông như thế này:
User.createCriteria().list([max:params.max,offset:params.offset],{
resultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
createAlias("others", "others", CriteriaSpecification.LEFT_JOIN);
ilike("others.firstName", "%${query}%");
});
Nguồn
2017-08-19 06:50:36
User.findAll không hoạt động? – havenchyk
@baxxabit 1.) Tôi cần có các đối tượng User khác nhau (dựa trên tên người dùng). 2.) Tôi phải sử dụng tiêu chí, vì danh sách thực tế của tôi dựa trên tìm kiếm phức tạp. Vì vậy, findAll() sẽ không khớp. – ashipj
'criteria.listDistinct()'? –