[Seasar-user:20167] [Kina-Dao]SQLの実行について

Inamine Morihiko [E-MAIL ADDRESS DELETED]
2010年 9月 21日 (火) 09:50:47 JST


いつもお世話になっています
稲嶺と言います
環境:
  Eclipse:Version: 3.4.2
  S2JUnit4:Version: 0.1.1.200812151526
  Kuina-Dao 1.0.3 
  Diigu:1.0.0
  JDK:1.6.0_18

現象:
  SQLによる検索を試していますが
  S2TestCase(setUp()->テストコード(Dao実行))に記述に実行すると
  正常に実行できますが
  Web環境(action->service->Dao実行)ではSQL文が探せないようで
  正常に動作しません
  
  SQL文を外出しして実行するには何か抜けまたは間違いがあるのでしょうか?
  
  ・正常に動作しないWeb環境(サービスに実装)のログ
  ---------------------------------------------------------------------
  クラス(interface abc_efg.dao.ReceiptInfoDao)のメソッド(public abstract 
java.util.List abc_efg.dao.ReceiptInfoDao.findByMaxReceiptNo(java.lang.
String))に適用できるKuina-Daoコマンドはありません
END abc_efg.dao.ReceiptInfoDao#findByMaxReceiptNo(100907%) Throwable:
java.lang.NoSuchMethodError: abc_efg.dao.ReceiptInfoDao$$
EnhancedByS2AOP$$3adbda.findByMaxReceiptNo(java.lang.String)
END abc_efg.service.GdataService#NextReceiptNo() Throwable:java.lang.
NoSuchMethodError: abc_efg.dao.ReceiptInfoDao$$EnhancedByS2AOP$$3adbda.
findByMaxReceiptNo(java.lang.String)
トランザクションをロールバックしました。tx=[FormatId=4360, GlobalId=
1285027888843/8, BranchId=]
  ---------------------------------------------------------------------
  
  外出しSQL文:ファイル名(receiptInfoDao_findByMaxReceiptNo.sql)
               Daoインターフェースと同じディレクトリに置いています
  --------------------------------------------------------------
  SELECT MAX(RECEIPT_NO) AS MaxReceiptNo
    FROM RECEIPT_INFO 
   WHERE RECEIPT_NO LIKE /*receiptNo*/
  --------------------------------------------------------------

  Dto:ファイル名(MaxRecceiptNoDto.java)
  --------------------------------------------------------------
  package abc_efg.dto;
  public class MaxRecceiptNoDto {
     private String MaxReceiptNo;

     public String getMaxReceiptNo(){
         return this.MaxReceiptNo;
     }
     public void setMaxReceiptNo(String MaxReceiptNo){
         this.MaxReceiptNo = MaxReceiptNo;
     }
  }
  --------------------------------------------------------------

  Dao:ファイル名(ReceiptInfoDao.java)
  --------------------------------------------------------------
  package abc_efg.dao;

  import abc_efg.dto.MaxRecceiptNoDto;
  import abc_efg.entity.ReceiptInfo;

  import java.util.List;

  public interface ReceiptInfoDao {
     public List<ReceiptInfo> findAll();
     public ReceiptInfo find(Integer receiptSeq);
     public void persist(ReceiptInfo info);
     public ReceiptInfo merge(ReceiptInfo info);
     public void remove(ReceiptInfo info);
     public boolean contains(ReceiptInfo info);
     public void refresh(ReceiptInfo info);
     public void readLock(ReceiptInfo info);
     public void writeLock(ReceiptInfo info);
     public List<ReceiptInfo> findByEtc(ReceiptInfo rep);
     public List<MaxRecceiptNoDto> findByMaxReceiptNo(String receiptNo);
  }
  --------------------------------------------------------------
  
  
  testReceiptDao.java(正常に動作する)
  --------------------------------------------------------------
  package abc_efg.dao;
  import abc_efg.dto.MaxRecceiptNoDto;
  import abc_efg.entity.ReceiptInfo;
  import java.text.SimpleDateFormat;
  import java.util.List;
  import org.seasar.extension.unit.S2TestCase;
  public class testReceiptDao extends S2TestCase {
    ReceiptInfoDao receDao;
    
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        include("app.dicon");
    }
    public void testFindTx() throws Exception{
        List<MaxRecceiptNoDto> maxRecceiptNoList =
              receDao.findByMaxReceiptNo("100907%");
        for (MaxRecceiptNoDto maxRecceiptNodata : maxRecceiptNoList) {
            System.out.println("最大の受付番号=[" 
                        + maxRecceiptNodata.getMaxReceiptNo() + "]");
        }
        
    }
  }
  --------------------------------------------------------------
  
  AbcService.java(正常に動作しないサービス)
  --------------------------------------------------------------
  package abc_efg.service;

  import abc_efg.dao.ReceiptInfoDao;
  import abc_efg.dto.MaxRecceiptNoDto;
  import abc_efg.entity.ReceiptInfo;

  import java.io.IOException;
  import java.text.SimpleDateFormat;
  import java.util.List;

  import javax.annotation.Resource;

  import org.w3c.dom.Element;
  import org.w3c.dom.Node;

  public class AbcService {
    @Resource
    ReceiptInfoDao receDao;   // 受付情報

    public String NextReceiptNo() throws IOException {
      List<MaxRecceiptNoDto> maxRecceiptNoList = 
                     receDao.findByMaxReceiptNo("100907%");
        for (MaxRecceiptNoDto maxRecceiptNodata : maxRecceiptNoList) {
            System.out.println("maxRecceiptNo=[" + maxRecceiptNodata.
getMaxReceiptNo() + "]");
        }
        return null;
    }
  }
  --------------------------------------------------------------
  
  −以上です
  


Seasar-user メーリングリストの案内