我试图使用querydsl-collections,但未能编写简单的groupBy表达式。以下是我的尝试:
import static com.mysema.query.alias.Alias.$;
import static com.mysema.query.alias.Alias.alias;
import static com.mysema.query.collections.CollQueryFactory.from;
import static java.util.Arrays.asList;
import java.util.List;
import com.mysema.query.Tuple;
public class QuerydslCollectionsGroupByTest {
public static void main(String[] args) {
List<Foo> foos = asList(
new Foo("a1", 1),
new Foo("a1", 2),
new Foo("a1", 3),
new Foo("a2", 4),
new Foo("a2", 5),
new Foo("a2", 6)
);
Foo f = alias(Foo.class, "foo");
List<Tuple> result = from($(f), foos)
.groupBy($(f.getA()))
.list($(f.getA()), $(f.getSum()).sum());
System.out.println(result);
}
public static class Foo {
private String a;
private Integer sum;
public Foo() {
}
public Foo(String a, Integer sum) {
this.a = a;
this.sum = sum;
}
public String getA() {
return a;
}
public Integer getSum() {
return sum;
}
public void setSum(Integer sum) {
this.sum = sum;
}
public void setA(String a) {
this.a = a;
}
}
}
但当我试着运行它的时候。我得到:
Exception in thread "main" com.mysema.codegen.CodegenException: Compilation of public class Q_838101820_201273267_01405199074_997653153 {
public static com.mysema.query.Tuple eval(com.sopovs.moradanen.zkoss.QuerydslCollectionsGroupByTest.Foo foo, com.mysema.query.types.QTuple a1) {
return (com.mysema.query.Tuple)(a1.newInstance(foo.getA(), sum(foo.getSum()))); }
}
failed.
/Q_838101820_201273267_01405199074_997653153.java:4: error: cannot find symbol
return (com.mysema.query.Tuple)(a1.newInstance(foo.getA(), sum(foo.getSum()))); }
^
symbol: method sum(Integer)
location: class Q_838101820_201273267_01405199074_997653153
1 error
at com.mysema.codegen.JDKEvaluatorFactory.compile(JDKEvaluatorFactory.java:74)
at com.mysema.codegen.AbstractEvaluatorFactory.createEvaluator(AbstractEvaluatorFactory.java:128)
at com.mysema.codegen.AbstractEvaluatorFactory.createEvaluator(AbstractEvaluatorFactory.java:94)
at com.mysema.query.collections.DefaultEvaluatorFactory.create(DefaultEvaluatorFactory.java:125)
at com.mysema.query.collections.DefaultQueryEngine.project(DefaultQueryEngine.java:234)
at com.mysema.query.collections.DefaultQueryEngine.evaluateSingleSource(DefaultQueryEngine.java:192)
at com.mysema.query.collections.DefaultQueryEngine.list(DefaultQueryEngine.java:91)
at com.mysema.query.collections.AbstractCollQuery.list(AbstractCollQuery.java:202)
at com.mysema.query.collections.AbstractCollQuery.list(AbstractCollQuery.java:195)
at com.sopovs.moradanen.zkoss.QuerydslCollectionsGroupByTest.main(QuerydslCollectionsGroupByTest.java:27)
Querydsl集合中尚不支持聚合预测https://github.com/Querydsl/Querydsl/issues/932
Collections Meteor用集合保存数据。集合里保存的Javascript对象叫做文档。使用new Mongo.Collection声明一个集合。 new Mongo.Collection(name, [options]) Anywhere Constructor for a Collection Arguments name String The name of the collect
Scala拥有丰富的集合库。 集合是事物的容器。 这些容器可以是有序的,线性的项目集合,例如List,Tuple,Option,Map等。集合可以具有任意数量的元素或者被限制为零或一个元素(例如,Option)。 收藏可能是strict或lazy 。 延迟集合包含的元素在访问之前可能不会消耗内存,例如Ranges 。 另外,集合可能是mutable (引用的内容可以改变)或immutable (引
集合类是用于数据存储和检索的专用类。 这些类为堆栈,队列,列表和哈希表提供支持。 大多数集合类实现相同的接口。 集合类用于各种目的,例如动态地为元素分配内存和基于索引等访问项目列表。这些类创建Object类的对象集合,这是VB中所有数据类型的基类。 。净。 各种集合类及其用法 以下是System.Collection命名空间的各种常用类。 单击以下链接以查看其详细信息。 类 描述和用途 Array
ES6引入了两种新的数据结构:地图和集合。 Maps - 此数据结构可将键映射到值。 Sets - 集类似于数组。 但是,集合不鼓励重复。 Maps Map对象是一个简单的键/值对。 地图中的键和值可以是原始的或对象。 以下是相同的语法。 new Map([iterable]) 参数iterable表示任何可迭代对象,其元素包含键/值对。 映射是有序的,即它们按插入顺序遍历元素。 地图属性 S
在Java 2之前,Java提供了特殊类,如Dictionary, Vector, Stack,和Properties用于存储和操作对象组。 尽管这些课程非常有用,但它们缺乏一个统一的中心主题。 因此,您使用Vector的方式与使用Properties的方式不同。 Collections框架旨在实现多个目标,例如 - 框架必须是高性能的。 基本集合(动态数组,链表,树和哈希表)的实现非常高效。 该