有没有办法为存储到 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"));
...但是重复指定它非常冗长。
您需要使用 DocumentStore
的 FindCollectionName
约定。
在Java中,您可以使用setFindCollectionName
的约定。
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
我将 RavenDB 与 JAVA ravendb-jvm-client 一起用于我的应用程序,其中现有集合名称不反映 'User.java' -> 'Users' 约定。有没有办法为 java bean 指定正确的集合名称,以便 java 客户端使用它而不是自动约定?类似于 JPA 的 @Table 注释。
我知道我可以在查询中指定集合名称,例如session.query(User.class, Query.collection("custUsers"));
...但是重复指定它非常冗长。
您需要使用 DocumentStore
的 FindCollectionName
约定。
在Java中,您可以使用setFindCollectionName
的约定。
By default a collection name is pluralized form of a name of an entity type. For example objects of type
Category
will belong toCategories
collection. However if your intention is to classify them asProductGroups
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