1

私はprimefaces 3.4とJSF 2.0を使用しています。クライアントマスターとケースマスターの2つのテーブルがあります。ケースマスタのエントリを行うと、クライアントID(ケースマスタの場合Foreign Key)のみケースマスタテーブルに更新されます。オートコンプリートの場合は、primefaces ショーケースと同じシナリオを使用しました。

ユーザーは文字を入力するだけで、その名前に従って候補が表示されます。ユーザーはそれらの1つを選択し、保存中にマスターの場合はクライアントIDのみが保存されます。基本的に私はコンバーターを使用しました。

ユーザーがケース エントリを追加するときは、データテーブルに表示する必要があります。問題は、クライアント ID の代わりにクライアント名を表示する必要があることです。データテーブルでどのように達成できるかを誰かが提案できますか?

私は以下を試しました

Created method in managed bean.   
value="#{caseUitility.clientName(case.id.clientID)}"
but failed.

SEVERE: プロキシを初期化できませんでした - セッションがありません

org.hibernate.LazyInitializationException: プロキシを初期化できませんでした - セッションがありません

データテーブルでどのように達成できるかを誰かが提案できますか? クライアントの名前を返す同じクライアントマスター用にもう1つコンバーターを作成する必要があります。または何か他のもの?

これがブラボーの皆さんにとって非常にばかげたことであることを願っていますが、私はここで1日半から本当に積み重ねています.

前もって感謝します....

4

3 に答える 3

1

LazyInitializationExceptionがあります。初期化されていないHibernateで生成されたプロキシにアクセスしようとしています。

プロキシをWebアプリでアクセスする前に、コンテンツを熱心にフェッチするか、 Hibernate.initialize(proxy)を使用して、プロキシを適切に初期化します。

于 2012-12-22T13:08:48.577 に答える
0

以下は、サブジェクト ID のサブジェクト名など、変換された値を取得する手順です。

  1. Managed Bean クラスでサブジェクト名を取得するメソッドを作成する


public String getSubjectNameById(Integer subjectID)
    {
        String subjectName = getSubjectsService().getSubjectById(subjectID).getSubjectName();
        return subjectName;
    }


2. 次のように、datatable 列の xhtml クラスからメソッドを呼び出します。

<p:column sortBy="#{QuestionsMB.subjectNameById}">
     <f:facet name="header">
         <h:outputText value="Subject :" />
     </f:facet>
     <h:outputText value="#{QuestionsMB.getSubjectNameById(question.subjectId)}" />
</p:column>

これが役立つことを願っています:)

于 2013-01-06T22:02:37.680 に答える
0

メソッドでアクセスしようとしているentityまたはがデータベースから照会されていないようです。この問題は、メソッドでデータベースからオブジェクトまたは関連するエンティティを再クエリすることで解決できます。 あなたをチェックして、例外がスローされた行を見つけてください。その後、遅延ロードされた. メソッドと例外をスローする行を 見ずに、これ以上何かを言うのは難しいです。fieldclientName()clientclientName()
stacktraceentity
clientName()

于 2012-12-22T14:03:29.453 に答える