首页 > 解决方案 > 有没有办法为存储到 RavenDB 的 Java bean 指定集合名称?

问题描述

我在我的应用程序中使用带有 JAVA ravendb-jvm-client 的 RavenDB,其中现有集合名称不反映 'User.java' -> 'Users' 约定。有没有办法为 java bean 指定正确的集合名称,以便 java 客户端使用它而不是自动约定?类似于 JPA 的 @Table 注释。

我知道我可以在查询中指定集合名称,例如session.query(User.class, Query.collection("custUsers"));......但重复指定它非常冗长。

标签: javaravendbravendb4

解决方案


您需要FindCollectionName使用DocumentStore.

在 Java 中,您可以使用setFindCollectionName约定。

来自https://ravendb.net/docs/article-page/4.1/java/client-api/session/configuration/how-to-customize-collection-assignment-for-entities

默认情况下,集合名称是实体类型名称的复数形式。例如类型的对象Category将属于Categories集合。但是,如果您打算将它们分类为ProductGroups使用以下代码:

store.getConventions().setFindCollectionName(clazz -> {
    if (Category.class.isAssignableFrom(clazz)) {
        return "ProductGroups";
    }

    return DocumentConventions.defaultGetCollectionName(clazz);
});

一般约定的文档:https ://ravendb.net/docs/article-page/4.1/java/client-api/configuration/identifier-generation/global


推荐阅读