Есть ли способ указать имя коллекции для Java bean-компонента, хранящегося в RavenDB?

Я использую RavenDB с JAVA ravendb-jvm-client для своего приложения, где имена существующих коллекций не отражают соглашение "User.java" -> "Users". Есть ли способ, как указать правильное имя коллекции для Java-бинов, чтобы Java-клиент использовал это вместо автоматического соглашения? Нечто похожее на аннотацию @Table для JPA.

Я знаю, что могу указать имя коллекции, например, в запросах, например session.query(User.class, Query.collection("custUsers"));... но очень многословно, чтобы указать его неоднократно.

1 ответ

Решение

Вам нужно использовать 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

Другие вопросы по тегам