java - Marklogic - 如何在 Java POJO 中从外部指定集合名称(使用 spring JPA 存储库)
问题描述
我是 Marklogic 的新手,想在 Java POJO 中从外部指定集合名称。目前 spring JPA 存储库尝试搜索名称为 pojo 的类名的集合。
@Repository
public interface PersonRepository extends MarkLogicRepository<Person, String> {
}
public class Person {
@Id
private String personId;
private String personName;
}
所以在上面的例子中,spring 从“Person”集合中获取数据,这对我的本地开发来说很好。但是对于开发和测试服务器,我需要从版本化集合中获取数据,例如可以在 application.properties 文件中配置的“Person_V1”/“Person_V2”。如何使集合名称可配置?
解决方案
值得注意的是,MarkLogic
collection
是文档元数据类别之一。它是非分层的并且与版本|类无关。
在我看来,您首先尝试映射
entity
POJO 以定义collection
需要编组的内容。将Annotation
是这样的:
@Document(
uri = "/person_{version}/${GUID}.xml",
collectionPrefix = "{collection-prefix|null}",
collection = "${method.getName()}"
)
第二,您说您希望
collection
在application.properties
. 然后.properties
文件如下所示:
# prefix could be `Person_V1`, ` Person_V2` or null
person.collectionPrefix =
person.collection =
您可以Annotation
在主类中定义,例如:
@Value("${person.collectionPrefix}")
private String ***;
@Value("${person.collection}")
private String ***;
优化的 MarkLogic Java 文档操作归结为:
metadata(Handle).getCollections().add(All)("{collection-array}");
但是,为您提供余地的是args
在方法 to中定义 POJO 对象setCollections() | getCollections()
。
MarkLogicmetadata
类和方法的完整回顾是:
https://docs.marklogic.com/javadoc/client/com/marklogic/client/io/DocumentMetadataHandle.html
推荐阅读
- java - 如何从相邻文本中获取文本颜色
- java - 如果使用 InputStream 来自 PIPE 的输入结束,如何使(Java)程序自动结束
- java - 如何对 char 进行 bean 验证?
- c - vscode中的c代码没有出现问题
- python - Numpy int64() 函数参数?
- php - 权限被拒绝麻烦 Laravel,在 centos 7
- python - 如何删除具有所有零值但不具有非零值的零的行
- xamarin - 任务被取消 Xamarin 异常
- html - $@Html.DisplayFor( 在桌子上给了我一个数字,我想使用那个数字,以便 IF 给我那个值
- python - 将输入分解为列出的频率