使用 MongoDB 的 Querydsl

Querydsl with MongoDB usage

我在 Java Spring 项目中有以下 Mongo 配置:

    @Configuration
public class MongoConfiguration {

    public static int allocateRandomPort() {
        try {
            ServerSocket server = new ServerSocket(0);
            int port = server.getLocalPort();
            server.close();
            return port;
        } catch (IOException e) {
            throw new RuntimeException("Failed to acquire a random free port", e);
        }
    }

    @Bean
    public Mongo mongo() throws IOException {
        System.setProperty("DB.TRACE", "true");
        return new EmbeddedMongoBuilder()
                .version("2.6.0")
                .bindIp("127.0.0.1")
                .port(allocateRandomPort())
                .build();
    }
}

要开始使用 Querydsl Mongodb 模块构建查询,documentation 表示:

Morphia morphia;
Datastore datastore;
// ...
QUser user = new QUser("user");
MorphiaQuery<User> query = new MorphiaQuery<User>(morphia, datastore, user);

我不知道如何创建 MorphiaQuery 的实例 class。 Datastore 对象应该是一个 inject Mongo 实例吗? Morphia 对象呢? Other tutorials 我发现在线创建实例为:

Morphia morphia = new Morphia()
        .map(Book.class, Author.class, Tag.class);

我想在 Spring Data MongoDB repository 中构建查询。某处有功能齐全的示例吗?

谢谢。

Morphia 和 Spring Data Mongodb 是 Querydsl Mongodb 的替代对象映射器。 Querydsl 本身与 Morphia 集成捆绑在一起,对于 Spring 数据 Mongodb 你需要参考 references docs 来设置它。