2012-01-17 5 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에 삽입 코드 JSP로 이동하면 엔티티/액세스 bean을 통해 삽입 된 데이터가 찾기 쿼리에 표시되지 않습니다. 즉, 리디렉션 대신 JSP로 전달하는 경우 트랜잭션은 JSP를 실행 한 후에 만 ​​커밋됩니다. Entity Bean 변경은 트랜잭션이 커밋 된 후에 db에 기록됩니다. 그 이유는 파인더 쿼리를 사용하려고 할 때 삽입을 볼 수없는 이유입니다.

  1. 변환 앞으로 JSP 리디렉션 JSP에 - :

    당신은 두 가지 옵션이 있습니다.

  2. 데이터를 가져 오는 데 주소 ID를 사용하여 AddressAccessBean의 setInitKey 메소드를 사용하십시오.