※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

S2Dao

readXlsAllReplaceDb()と外部キー制約

readXlsAllReplaceDb()は、シートの逆順でテーブルの内容を削除し、シート順でデータを挿入する。
Aテーブルの外部キーがBテーブルの列を指しているとする。Excelのシート順は、B,Aの並びにしないと外部キー制約となる。

setUp()・setUpXxx()で、readXlsAllReplaceDb()を呼び出すとエラーを吐く

setUp()・setUpXxx()で、readXlsAllReplaceDb()を呼び出そうとすると、DataSourceがないとエラーが出る。

org.seasar.framework.exception.EmptyRuntimeException: 
[ESSR0007]dataSourceはnullあるいは空であってはいけません
	at org.seasar.extension.unit.S2TestCase.getDataSource(S2TestCase.java:167)
	at org.seasar.extension.unit.S2TestCase.deleteTable(S2TestCase.java:453)
	at org.seasar.extension.unit.S2TestCase.readXlsAllReplaceDb(S2TestCase.java:383)
	at org.seasar.extension.unit.S2TestCase.readXlsAllReplaceDb(S2TestCase.java:369)
	at dao.sample3.DrinkDaoTest.setUpGetAllDrinks(DrinkDaoTest.java:38)

S2FrameworkTestCaseクラス内で、次のような呼び出しになっているため。setUpAfterContainerInit()が呼ばれた時に、DataSourceが設定される。
それ以前に呼びたいときは、DataSourceを設定するメソッドを自分で呼び出さないといけない。

   // S2FrameworkTestCaseクラス
   /**
    * @see junit.framework.TestCase#runBare()
    */
   public void runBare() throws Throwable {
       setUpContainer();
       try {
           setUp();
           try {
               setUpForEachTestMethod();
               try {
                   container.init();
                   try {
                       setUpAfterContainerInit();
                       try {
                           bindFields();
                           try {
                               setUpAfterBindFields();
                               try {
                                   doRunTest();
                               } finally {
                                   tearDownBeforeUnbindFields();
                               }
                           } finally {
                               unbindFields();
                           }
                       } finally {
                           tearDownBeforeContainerDestroy();
                       }
                   } finally {
                       container.destroy();
                   }
               } finally {
                   tearDownForEachTestMethod();
               }
           } finally {
               tearDown();
           }
       } finally {
           tearDownContainer();
       }
   }
   // S2TestCaseクラス
   protected void setUpAfterContainerInit() throws Throwable {
       super.setUpAfterContainerInit();
       setupDataSource();
   }