1

少し休止状態/春の MVC プロジェクトをセットアップしようとしています。

データベースからのデータを表示する Spring .jsp ページを取得しましたが、休止状態でオブジェクトをデータベースに保存する方法がわかりません。

ここに私の(関連する)コードがあります:

GroupDAOImpl.java (メソッド)

@Override
public void saveGroup(Group group){
    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();
    session.save(group);

    transaction.commit();
    session.close();
}

HelloController.java メソッド:

 public ModelAndView add(HttpServletRequest request, HttpServletResponse response, Group group) throws Exception {
    groupDAO.saveGroup(group);
    return new ModelAndView("redirect:list.htm");
}

jsp ページ:

<form:form action="add.htm" commandName="group">
<table>
    <tr>
        <td>group Name :</td>
        <td><form:input path="name"/></td>
    </tr>

    <tr>
        <td colspan="2"><input type="submit" value="Register"></td>
    </tr>
</table>

サーバーからのログ:

Hibernate: insert into groups (id, name, shoppingList_id) values (default, ?, ?)

GroupDAOImpl 保存方法の「グループ」のデバッガー値:

id = 2
name = "jjjj"

何か案は?大歓迎です!

4

2 に答える 2

0

実際、ログに SQL リクエストが表示されます。

Hibernate: insert into groups (id, name, shoppingList_id) values (default, ?, ?)

説明が不十分で、既存のオブジェクトの SQL 更新クエリであることを期待していると思います。

オブジェクトを更新する場合、SpringMVC バインディングによって提供される Group インスタンスは、オブジェクト ID を認識している必要があります。実際には、フォームはグループ ID を送信しないため、アプリケーションはどのオブジェクトを更新する必要があるかを認識できません。

そして、IDを知っていても、呼び出すのはSession.saveではなくSession.mergeになります:)

于 2013-04-25T22:14:05.107 に答える