我正在使用mongodb和java以及morphia。
对于我的用例,我在运行时获取集合名称。所以我有一个集合名称的枚举,并根据一些值我从枚举中获取相应的集合名称。我的实体注释如下
@entity(EnumName.getCollectionName())
但我收到以下错误
"The value for annotation attribute Entity.value must be a constant expression"
我实际上只返回一个常量表达式。任何人都可以让我知道这是什么问题。
答案 0 :(得分:0)
您不能在注释中使用某些动态内容,因为那些是“编译”时间特征,之后无法更改。所以你只能处理你在那里声明的常量,枚举和类。为此,智能编译器可能会发现您处理的内容可能永远不会发生变化,但大多数情况下,只要看到您尝试将某些函数值作为注释属性设置,就会发生错误。
我真的不明白你想要做什么,但它看起来好像你试图为一些具体实体使用一个“通用”实体类。我认为这是非常糟糕的设计。 如果您能告诉我们更多细节,我们可能会为您解决问题提供适当的解决方案。
如果您根本不知道在运行时必须使用哪个类,请尝试此操作。
声明你的具体实体并用这些类填充你的枚举。在运行时,您可以执行Datastore.find(Enum.YOURCLASS)
,而morphia将查询您的相应课程。