[Seasar-user:7174] Re: EntityManager によるクエリ実行で例外
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 4月 11日 (水) 12:55:46 JST
お世話になっております。
後藤と申します。
[Seasar-user:7163] EntityManager によるクエリ実行で例外 の件についてですが、
S2Dao 1.0.41-RC1 から 1.0.41 にバージョンUPしたところ
こちらでも同じ事象が発生しています。
S2Container 2.4.11
S2Dao 1.0.41
j2ee.dicon, dao.dicon ともjarファイル内のものを使用しています。
なお、RDBは Oracle9i R2 です。
Daoのメソッドから同じDao内の別メソッドを呼ぶと発生するようです。
このような処理は 本来、Daoを使用するクラスで行うべきなのかもしれませんが。
このような Dao を
[Daoソース]
@S2Dao(bean=TestTable.class)
public abstract class TestTableDaoImpl extends AbstractDao implements TestTableDao {
public TestTableDaoImpl(DaoMetaDataFactory daoMetaDataFactory) {
super(daoMetaDataFactory);
}
public abstract TestTable[] selectAll();
@Arguments("ID")
public abstract TestTable selectById(Integer id);
@Sql("select count(*) from test_table")
public abstract int selectCount();
public boolean isCountZero() {
int count = selectCount();
if (count > 0) {
return false;
}
return true;
}
public abstract int insert(TestTable table);
public abstract int update(TestTable table);
public abstract int delete(TestTable table);
@Sql("delete from test_table")
public abstract int deleteAll();
}
以下のようなテストクラスで実行すると
testInsertFailTx は失敗し、testInsertTx は成功します。
[DaoTestソース]
public class TestTableDaoTest extends S2DaoTestCase {
private TestTableDao testTableDao;
public TestTableDaoTest(String arg0) {
super(arg0);
}
public void setUp() {
include("TestTableDao.dicon");
}
public void testInsertFailTx() {
if (testTableDao.isCountZero()) {
TestTable entity = new TestTable();
entity.setId(1);
entity.setName("Test1");
testTableDao.insert(entity);
} else {
TestTable entity = new TestTable();
entity.setId(2);
entity.setName("Test2");
testTableDao.insert(entity);
}
}
public void testInsertTx() {
if (testTableDao.selectCount() > 0) {
TestTable entity = new TestTable();
entity.setId(2);
entity.setName("Test2");
testTableDao.insert(entity);
} else {
TestTable entity = new TestTable();
entity.setId(1);
entity.setName("Test1");
testTableDao.insert(entity);
}
}
}
事象が発生するソースまた、テストテーブル作成用のDDLを添付します。
お手数おかけしますが、ご確認よろしくお願いします。
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: s2dao1_0_41_error.zip
型: application/zip
サイズ: 5747 バイト
説明: 無し
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070411/0dde0db9/attachment.zip
Seasar-user メーリングリストの案内