0

HibernateオブジェクトとそのInSpringMVCFrameworkの使用について質問があります。2つのオブジェクトがあります:ManyToOne関係のカテゴリと言語:

@ManyToOne
@JoinColumn(name="language_id")
public Language getLanguage() {
return language;
}

言語を選択して新しいカテゴリを作成するアクションを作成したいと思います。私のフォームは次のようになります。

<form:form modelAttribute="addCategory" name="frm" method="post">

<form:select path="language.id">
<form:options items="${languages}" itemValue="id" itemLabel="name" />
</form:select>

//Other Fields like name etc.

</form:form>

コントローラのPOSTメソッドには次のものがあります。

@RequestMapping(method = RequestMethod.POST, value="/add_category")
public String addCategory(Category category){
//code for save, redirect etc.
}

データベースに存在するID=4で名前が「英語」の言語を選択したとします。metod addCategoryで言語IDを表示したい場合(category.getLanguage()。geiId()で)ID = 4を正しく持っていますが、選択した言語名をcategory.getLanguage()。getName()で表示したい場合ヌル。

これは、おそらく、SpringオブジェクトカテゴリがHibernateのリレーションについて何も知らないためです。私はHibernate4、Spring 3を使用しており、SpringBeanSessionFactoryを使用してHibernateに接続しています。

Springリクエストで完全な再帰オブジェクトを取得する可能性はありますか?言い換えると、カテゴリ内の言語(category.getLanguage())がID=4で名前が「English」の完全なオブジェクトになる状況です。

ありがとう。

4

1 に答える 1

0

カテゴリ オブジェクトの言語オブジェクトに名前を入力する必要がある理由について質問があります。カテゴリオブジェクトをデータベースに保存しようとすると、休止状態によって参照目的でのみ使用されるためです。

hibernate を使用してデータベースからカテゴリ オブジェクトをフェッチすると、ID と値の両方を持つ言語オブジェクトを含むオブジェクトが返されます。

とにかく名前を表示したい場合は、ユーザーが選択した jsp ページから取得する ID を使用して名前を取得する必要があります。次に、カテゴリ オブジェクトに格納されているオブジェクトにその名前を設定します。それ以外の場合は、jsp に別のフィールドが必要ですpath="language.name"

これがお役に立てば幸いです。乾杯。

于 2012-06-09T09:53:56.930 に答える