我正在为我的应用程序使用带有JAVA ravendb-jvm-client的RavenDB,其中现有的集合名称并不反映'User.java' - >'用户'约定。有没有办法如何为java bean指定正确的集合名称,以便java客户端使用此而不是自动约定?类似于JPA的@Table注释。
我知道我可以在查询中指定集合名称,例如session.query(User.class, Query.collection("custUsers"));
......但是反复指出它非常冗长。
你需要使用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