2012-01-17 16 views
0

データベースに(データをコミットする)を追加した後、AccessBeanに最新のデータを取得しません。しかし、再びjspに戻ってくると、データが利用可能になります。私はこの問題の解決方法を知らない。以下は jspでaccessbean経由でDBからデータを取得する方法

はaccessbeansとそのファインダメソッドを使用して、JSP上のデータをフェッチするためにdata.tryingをコミットした場合、JSP

<% 
String[] member_Id = (String[])request.getAttribute("memberid");       
String memberId=member_Id[0]; 
AddressAccessBean add = new AddressAccessBean(); 
java.util.Enumeration enu = add.findByMemberId(Long.parseLong(memberId)); 
while (enu.hasMoreElements()) { 
     AddressAccessBean as = (AddressAccessBean) enu.nextElement(); 
     if (as.getAddressField3() != null && as.getAddressField1().equals("WD")) { 
      com.ibm.commerce.extension.objects.xShipToCodeAccessBean bb = new com.ibm.commerce.extension.objects.xShipToCodeAccessBean().findByShipToCodeName(as.getAddressField3()); 
           %> 
<TR> 
<Td ALIGN="LEFT" width="20%"><%=as.getAddressField2()%></Td> 
<Td ALIGN="LEFT" width="20%"><%=bb.getName()%></Td> 
<Td ALIGN="LEFT" size="15%"><%=bb.getShipToCodeName()%></Td> 
<Td ALIGN="LEFT" size="10%"><%=bb.getCity()%></Td> 
<Td ALIGN="LEFT" size="10%"><%=bb.getState()%></Td> 
<Td ALIGN="LEFT" size="10%"><%=bb.getSoldTo()%> 
</Td> 

答えて

0

にテーブルに表示した後

AddressAccessBean add = new AddressAccessBean(Long.parseLong(memberid),shipid); 
        shipBean.setInitKey_ShipToCodeName(shipid); 

    add.setAddressField2(shipBean.getName()+shipBean.getCity()+shipBean.getState());     
    add.setAddressField1("WD"); 

    add.setMemberId(memberid); 

    add.setAddressField3(shipid); 

    add.setStatus("P"); 

    add.commitCopyHelper(); 

cmdImplの挿入コードですエンティティ/アクセスBeanを介して挿入されたデータは、ファインダのクエリには表示されません。つまり、リダイレクトではなくJSPに転送する場合、トランザクションはJSPの実行後にのみコミットされます。エンティティBeanの変更は、トランザクションがコミットされた後にdbに書き込まれます。 Thatsは、検索クエリを使用しようとしているときに挿入を見ることができない理由です。

次の2つのオプションがあります: -

  1. はリダイレクトJSPを楽しみにJSPを変換します。
  2. データを取得するためにアドレスIDを使用してAddressAccessBeanのsetInitKeyメソッドを使用する
関連する問題