mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
This commit is contained in:
parent
f6d3d6f4a4
commit
9cb530a664
@ -36,6 +36,8 @@ public class DefaultQueryMetadata<JoinMeta> implements QueryMetadata<JoinMeta>{
|
||||
private CascadingBoolean where = new CascadingBoolean();
|
||||
|
||||
private boolean distinct;
|
||||
|
||||
private QueryModifiers modifiers = QueryModifiers.getDefault();
|
||||
|
||||
public List<? extends Expr<?>> getGroupBy() {
|
||||
return Collections.unmodifiableList(groupBy);
|
||||
@ -117,5 +119,15 @@ public class DefaultQueryMetadata<JoinMeta> implements QueryMetadata<JoinMeta>{
|
||||
public void setDistinct(boolean distinct) {
|
||||
this.distinct = distinct;
|
||||
}
|
||||
|
||||
public QueryModifiers getModifiers() {
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
public void setModifiers(QueryModifiers restriction) {
|
||||
this.modifiers = restriction;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -120,6 +120,14 @@ public interface Projectable {
|
||||
* @return
|
||||
*/
|
||||
Object[] uniqueResult(Expr<?> first, Expr<?> second, Expr<?>... rest);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param <RT>
|
||||
* @param expr
|
||||
* @return
|
||||
*/
|
||||
<RT> SearchResults<RT> listResults(Expr<RT> expr);
|
||||
|
||||
|
||||
}
|
||||
@ -64,6 +64,11 @@ public abstract class ProjectableAdapter implements Projectable{
|
||||
return projectable.list(projection);
|
||||
}
|
||||
|
||||
public <RT> SearchResults<RT> listResults(Expr<RT> expr){
|
||||
return projectable.listResults(expr);
|
||||
}
|
||||
|
||||
|
||||
public <RT> List<RT> listDistinct(Expr<RT> projection) {
|
||||
return projectable.listDistinct(projection);
|
||||
}
|
||||
|
||||
@ -57,6 +57,18 @@ public abstract class QueryBaseWithProjection<JoinMeta,SubType
|
||||
public <RT> List<RT> list(Expr<RT> projection) {
|
||||
return IteratorUtils.toList(iterate(projection));
|
||||
}
|
||||
|
||||
public <RT> SearchResults<RT> listResults(Expr<RT> projection){
|
||||
QueryModifiers modifiers = getMetadata().getModifiers();
|
||||
List<RT> list = list(projection);
|
||||
if (list.isEmpty()){
|
||||
return SearchResults.emptyResults();
|
||||
}else{
|
||||
int start = Math.min(modifiers.getOffset(), list.size());
|
||||
int end = Math.min(modifiers.getOffset() + modifiers.getLimit(), list.size());
|
||||
return new SearchResults<RT>(list.subList(start, end), modifiers, list.size());
|
||||
}
|
||||
}
|
||||
|
||||
public final List<Object[]> listDistinct(Expr<?> first, Expr<?> second, Expr<?>... rest) {
|
||||
getMetadata().setDistinct(true);
|
||||
|
||||
@ -54,4 +54,7 @@ public interface QueryMetadata<JoinMeta> {
|
||||
|
||||
void setDistinct(boolean distinct);
|
||||
|
||||
QueryModifiers getModifiers();
|
||||
|
||||
void setModifiers(QueryModifiers restriction);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user