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

问题描述 投票:0回答:1

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

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

java ravendb ravendb4
1个回答
0
投票

你需要使用FindCollectionNameDocumentStore惯例。

在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

© www.soinside.com 2019 - 2024. All rights reserved.