2011-01-12 13 views
8

私はSpring 3 + JPA 2.0アプリケーションを持っています。私の@Controllerで私は初期化されたオブジェクトが必要ですが、私はプロキシを持っています、私はそれをプログラムで初期化できる必要があります。私はorg.hibernate.Hibernate.initialize(Object)のような機能が必要です。強制する方法Hibernate JPAプロキシをJSON呼び出しで使用するように初期化する

誰かが助けることができます。このオブジェクトはAJAX操作に使用されます。プロパティがプロキシの場合、JSONとして送信することはできません

答えて

4

私の知る限り、JPAのオプションはありません。 Hibernate.initialize(..)を使用してください。

実際に、私が休止状態の実装を見たとき、遅延コレクションは、多くの場合、期待できないように初期化されているように見えます。 entityManager.contains(..)およびPersistence.getPersistenceUtil().isLoaded(...)のようになります。これらを試してみてください。しかし、あなたはそのような実装の詳細に頼るべきではないと思います。

+0

ありがとうございます。私は追加のオブジェクトを作成し、それをビューに送信したくありませんでした。私たちはまだプロジェクトの初期段階であるため、JPAの理由が固執していないため、休止状態に移行することにしました。すべての休止状態のユーザーが 'Hibernate.initialise(..)'を使うだけです。 – pmanolov

0

私たちのアプリケーションでも同様のことが行われており、データベースエンティティオブジェクトを分割し、JSON出力用に別のクラスを用意すると便利です。

あなたは自分のオブジェクトを検査し、のような物体持つことができること、オブジェクト上の一人ひとりの特性のために、いくつかのJSONをチャックJSONフレームワーク使用している場合:

PersonEntityを - JPA によって管理クラスを PersonJsonOutput - JSON出力向けに特別に設計されたクラス

長期的にはより安全です。これにより、自動的にJSONサービスに反映されないデータベース変更を行うことができます。データベースエンティティが変更されるとすぐに古いバージョンを破棄するのではなく、おそらくJSONサービスをバージョンアップすることができます。

また、この答えは実際にはどのように」に依存...など、

を言うの日付形式の面であなたのJSON出力のより多くの制御を与えたり、JSON内の文字列であることをデータベースに数値を強制的にJSONを生成していますが、ライブラリがいくつかのイントロスペクションを行うように聞こえます。

0

は、私はそれが遅れているとの回答が受け入れられている知っているが、他の標準のJPAの方法は、あなたが前にDAOからオブジェクトを返すに初期化したいリストのサイズ()メソッドを呼び出すことです:

Object.getList().size(); 

これは、初期化の実装固有のメカニズムを不正行為して使用する必要がなくなります。

関連する問題