Mongodb 形态注释

Mongodb 形态注释,mongodb,morphia,Mongodb,Morphia,我将mongodb与java以及morphia一起使用 对于我的用例,我在运行时获取集合名称。因此,我有一个集合名称的枚举,并根据某个值从枚举中获得相应的集合名称。我的实体注释如下 @entity(EnumName.getCollectionName()) 但是我得到了以下错误 "The value for annotation attribute Entity.value must be a constant expression" 实际上,我只返回一个常量表达式。有谁能告诉我问题出在哪里

我将mongodb与java以及morphia一起使用

对于我的用例,我在运行时获取集合名称。因此,我有一个集合名称的枚举,并根据某个值从枚举中获得相应的集合名称。我的实体注释如下

@entity(EnumName.getCollectionName())
但是我得到了以下错误

"The value for annotation attribute Entity.value must be a constant expression"

实际上,我只返回一个常量表达式。有谁能告诉我问题出在哪里。

你不能在注释中使用一些动态的东西,因为这些是“编译”时的特性,以后不能更改。因此,您只能处理在那里声明的常量、枚举和类。为此,智能编译器可能会发现您处理的某些内容可能永远不会更改,但大多数情况下不会更改,并且在他们看到您试图将某些函数值指定给注释属性时会立即出错

我真的不明白您想做什么,但不知怎么的,您似乎试图对几个具体实体使用一个“通用”实体类。我觉得这真是个糟糕的设计。 如果你能告诉我们更多的细节,我们也许能为你的问题提供一个合适的解决方案

如果您不知道在运行时必须使用什么类,请尝试以下方法。
声明具体的实体并用这些类填充枚举。在运行时,您可以执行
Datastore.find(Enum.YOURCLASS)
,morphia将查询相应的类。

为什么在运行时获取集合名称?这是不是可以放在配置文件中而不是在运行时获取?