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

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

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

1 Ответ

0 голосов
/ 12 сентября 2018

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

...