有没有办法为存储到 RavenDB 中的 Java bean 指定集合名称?

Is there a way to specify collection name for Java bean being stored into RavenDB?

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

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

您需要使用 DocumentStoreFindCollectionName 约定。

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

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

By default a collection name is pluralized form of a name of an entity type. For example objects of type Category will belong to Categories collection. However if your intention is to classify them as ProductGroups use the following code:

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