1

Spring と DBunit ( http://springtestdbunit.github.io/ )を使用してコードをテストしようとしています。

ユニットテストに入ったら:

sessionFactory.getCurrentSession().createCriteria(MyEntity.class).list()

DBUnit によって挿入されたエンティティのリストを返すため、データベース (MYSQL) にレコードを挿入しました。

しかし:

sessionFactory.openStatelessSession().createCriteria(MyEntity.class).scroll(FORWARD_ONLY).next()

false を返します! ステートレス セッションを使用してレコードを見つけることができません。

前もって、Liquibase を使用して同じレコードを挿入していましたが、このコードは完全に機能しました。

HSql を使用するとさらに悪いことに、ステートレス セッションを開こうとすると完全にフリーズします... (scroll() 命令で...)

ご協力ありがとうございました!

4

3 に答える 3

0

わかった!したがって、これは実際にはDBunitとは何の関係もありません...

このコードは単純で同じ問題を示しており、DBUnit は関与していません。

MyEntity myEntity = new MyEntity ();
    sessionFactory.getCurrentSession().save(myEntity );
    assertEquals(1, sessionFactory.getCurrentSession().createCriteria(MyEntity .class).list()
            .size());
    assertTrue(sessionFactory.openStatelessSession().createCriteria(MyEntity .class)
            .scroll(ScrollMode.FORWARD_ONLY).next());

最初のアサートは問題ありませんが、2 番目のアサートは失敗します。だから私はそれが単純な休止状態の問題だと思います.liquibaseが何らかの形でそれを防ぐために何かをしていたと思います.おそらくトランザクションの問題ですか?

于 2015-04-16T09:44:11.090 に答える