0

私はJavaとモルヒネでmongodbを使用しています。

私のユースケースでは、実行時にコレクション名を取得します。したがって、コレクション名の列挙型があり、いくつかの値に基づいて、列挙型から対応するコレクション名を取得します。私のエンティティアノテーションは次のとおりです

@entity(EnumName.getCollectionName())

しかし、私は次のエラーが発生します

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

私は実際には定数式のみを返しています。誰かが私に問題が何であるかを教えてもらえますか?

4

1 に答える 1

0

後で変更できない「コンパイル」時の機能であるため、注釈内で動的なものを使用することはできません。したがって、そこで宣言した定数、列挙型とクラスのみを処理できます。このため、スマート コンパイラは、変更されない可能性のあるものを処理していることを検出できる場合がありますが、ほとんどの場合、関数値を注釈プロパティに代入しようとしていることがわかるとすぐにエラーになります。

何をしようとしているのかよくわかりませんが、いくつかの具体的なエンティティに対して 1 つの「汎用」エンティティ クラスを使用しようとしているように見えます。これは本当に悪い設計だと思います。詳細をお知らせいただければ、問題の適切な解決策を提供できる場合があります。

実行時に操作する必要があるクラスがわからない場合は、これを試してください。具体的なエンティティを宣言し、列挙型にそれらのクラスを入力します。実行時に行うことができDatastore.find(Enum.YOURCLASS)、morphia は適切なクラスを照会します。

于 2012-05-24T07:01:14.420 に答える