Есть ли способ указать имя коллекции для 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
конвенций.
По умолчанию имя коллекции является множественной формой имени типа сущности. Например объекты типа
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