我使用的是mongodb和java,还有morphia。
对于我的用例,我在运行时获得了集合名称。所以我有一个集合名称的枚举,基于一些值,我从枚举中获得了相应的集合名称。我的实体注释如下
@entity(EnumName.getCollectionName())但是我得到了以下错误
"The value for annotation attribute Entity.value must be a constant expression"实际上,我只返回一个常量表达式。有人能告诉我问题出在哪里吗?
发布于 2012-05-24 15:01:14
你不能在注解中使用一些动态的东西,因为这些是“编译”的时间特性,以后不能改变。所以你只能处理你在那里声明的常量,枚举和类。为此,聪明的编译器可能会发现你处理了一些可能永远不会改变的事情,但大多数人不会改变,一旦他们看到你试图将一些函数值赋给注释属性,他们就会出错。
我真的不明白你想做什么,但不知何故,你似乎试图用一个“泛型”实体类来实现几个具体的实体。我认为这真的是糟糕的设计。如果你能说出更多细节,我们也许能为你的问题提供一个合适的解决方案。
如果你只是不知道在运行时你必须操作什么类,试试这个。声明您的具体实体,并用这些类填充您的枚举。在运行时,您可以执行Datastore.find(Enum.YOURCLASS),morphia将查询您相应的类。
https://stackoverflow.com/questions/10729240
复制相似问题