0

をデータベースに追加した後 (データをコミット)、AccessBean に挿入された最新のデータを取得できません。しかし、再びjspに戻ると、データが利用可能です。問題を解決する方法がわかりません。

以下はcmdImplの挿入コードです

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();

データをコミットした後、accessbeans とそのファインダー メソッドを介して jsp でデータを取得しようとし、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>
4

1 に答える 1

0

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

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

  1. フォワード JSP をリダイレクト JSP に変換します。
  2. アドレス ID を使用して AddressAccessBean の setInitKey メソッドを使用し、データをフェッチします。
于 2012-03-07T05:40:59.127 に答える