我正在为我一直在研究的持久性层编写一些测试,并且遇到了一个我无法处理的异常,它发生在org.hibernate.mapping.Table.cleanseUniqueKeyMap(Table.java:291)
.
原来是这行代码:
final Map.Entry<String,UniqueKey> uniqueKeyEntry = uniqueKeyEntries.next();
在做了一些研究之后,我发现异常是由一个线程在这个线程迭代它时修改这个集合引起的。话虽如此,我觉得我所做的一切都没有导致这种情况发生,有什么关于故障排除的建议吗?
顺便说一句,我正在使用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 是哪种兔子洞,但这是我在异常发生之前执行的代码的最后一行。