0

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

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

@entity(EnumName.getCollectionName())

但我收到以下错误

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

我实际上只返回一个常量表达式。谁能让我知道问题是什么。

4

1 回答 1

0

您不能在注释中使用一些动态的东西,因为这些是“编译”时功能,之后无法更改。所以你只能处理你在那里声明的常量,枚举和类。为此,智能编译器可能会发现您处理的东西可能永远不会改变,但大多数人不会,并且一旦他们看到您正在尝试将某个函数值分配给注释属性,就会简单地出错。

我真的不明白您要做什么,但不知何故,您似乎尝试对几个具体实体使用一个“通用”实体类。我认为这是一个非常糟糕的设计。如果您能说出更多细节,我们或许可以为您的问题提供适当的解决方案。

如果您根本不知道在运行时必须使用什么类,请试试这个。声明你的具体实体并用这些类填充你的枚举。在运行时你可以这样做Datastore.find(Enum.YOURCLASS),morphia 将查询你的适当类。

于 2012-05-24T07:01:14.420 回答