3

いくつかのドメイン/ビジネス オブジェクトがあり、休止状態の条件で使用すると、フィールド名によって文字列として参照されます。たとえば、次のようになります。

Criteria crit = session.createCriteria(User.class);
Order myOrdering = Order.desc("firstname");
crit.addOrder(myOrdering);

firstnameは User.class のフィールド/プロパティです

Enum を手動で作成し、そこにすべての文字列を格納できます。私が行方不明で、必要な作業が少ない他の方法はありますか(おそらくEnumを維持するのを忘れるでしょう)。

4

2 に答える 2

3

それを行う良い方法がないのではないかと心配しています。リフレクションを使用することにした場合でも、クエリが実行されて初めて問題が発見されます。

しかし、問題を早期に発見するためのもう少し良い解決策があります。名前付きクエリ (javax.persistence.NamedQueries) を使用すると、エンティティが Hibernate によって処理されるとすぐにすべてのクエリがコンパイルされるため、基本的にはサーバーの起動時に発生します。したがって、オブジェクトが変更されてクエリが壊れた場合は、クエリが実際に実行されたときではなく、次にサーバーを起動したときにそれがわかります。

それが役に立てば幸い。

于 2011-10-27T14:30:24.800 に答える
1

これは、Hibernateについて私を苛立たせるものの1つです。

いずれにせよ、私は過去に2つのメカニズムのいずれかを使用してこれを解決しました。つまり、Hibernate構成ファイルから基本クラスを生成するために使用されるテンプレートをカスタマイズするか、アノテーション/プロパティについてHibernateクラスに問い合わせて、適切な列挙型、クラス、定数を生成します。そこからなど。それはかなり簡単です。

それはビルドプロセスにステップを追加しますが、IMOは私がそれをしたときにまさに必要だったものでした。(私が行っていない最後のいくつかのプロジェクトですが、大規模なマルチ開発のものについては、私はそれが本当に好きです。)

于 2011-10-27T14:39:43.537 に答える