作業中の永続化レイヤーのテストをいくつか作成していますが、処理に問題があるという例外が発生しました。これは、で発生しているConcurrentModificationExceptionですorg.hibernate.mapping.Table.cleanseUniqueKeyMap(Table.java:291)
。
これが次のコード行であることがわかります。
final Map.Entry<String,UniqueKey> uniqueKeyEntry = uniqueKeyEntries.next();
少し調べてみたところ、このスレッドがコレクションを反復処理しているときに、1つのスレッドがこのコレクションを変更したことが例外の原因であることがわかりました。そうは言っても、トラブルシューティングに関する提案が発生する原因となっていることは何もしていないように感じますか?
ところで、私は使用してhibernate 4.1.5
います。それが何かをクリアするかどうかのIdk。これが私のテストです:
@Test
public void testCreateMobsterUser() {
try {
final MobsterUserDAO test = new MobsterUserDAO(); //throws exception
//does stuff w/ return value...
ご覧のとおり、daoを初期化してみます。そのコードを見てみましょう。
public MobsterUserDAO() {
super(MobsterUser.class);
}
それではあまりわかりませんでしたので、一般的なdaoコンストラクターを見て、そこで問題が発生するかどうかを確認しましょう。
public MobsterBaseHibernateDAO(final Class<T> clazz) {
this.clazz = clazz;
//This next line is where the exception is actually occuring
final EntityManagerFactory factory = Persistence.createEntityManagerFactory("mobsterdb");
this.manager = (HibernateEntityManager) factory.createEntityManager();
}
Persistance.createEntityManagerFactoryがどのような種類のウサギの穴であるかはわかりませんが、例外が発生する前に実行されるコードの最後の行です。