1

休止状態を介してデータベースに接続されているフォームがあります。このフォームを使用すると、ユーザーは名前、住所、電子メール情報などのフィールドに入力して入力できます。情報の入力がすべて完了したら、フォームを送信します。送信後、すべての情報が同じページのデータ テーブルに表示されます。

セッションを使用してデータベースとやり取りしています。ただし、データベースから入力されているデータは正しくないようです。

public void somefunction() {

    //The sessionfactory is being configured in another class
    Session s = sessionFactory.openSession(); 
    Transaction tx= null;

    try {
        tx= s.beginTransaction();

        List userInformation = s.createQuery("FROM database1 WHERE PKEY ='"+somevalue+"'").list();

        for(Iterator iterator = userInformation.iterator; iterator.hasNext();){

            //database1 is an entity bean
            database1 x = (database1) iterator.next();

            System.out.print(x.getName());
        }
        tx.commit();
    }
    catch(Exception) {......}
    finally {.....}
}

ユーザーが最初の「ユーザー」に情報を送信すると、すべてがデータテーブルに表示されます。ただし、2 番目の「ユーザー」を入力すると、データが異なっていても、データテーブルに表示される行は最初のユーザーと同じ情報になります。コードは正しいように見えるので、何が問題なのかわかりません。

4

2 に答える 2

0

解決策を見つけました。

を使用する代わりにsession.createQuery("QUERY")

Criteria cr = session.createCriteria(SomeClass.class)

cr.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

cr.add(/* add some filters here */);

ScrollableResults sr = cr.scroll(ScrollMode.FORWARD_ONLY);

while(sr.next) {
  someObject so = (someObject) sr.get(0);
  //Do action here
}

これで、単一の結果を取得するという私の問題が解決しました。

于 2012-12-20T03:52:14.043 に答える
0

正しい値を取得するには、主キーを使用する必要があります。list userInformation = s.createQuery("FROM database1 where yourId='PK'").list();

クエリでは、常に最初の行が返されます。

于 2012-12-19T04:08:08.027 に答える