[S2JDBC] 同じエンティティに対する最初の問い合わせが複数のスレッドから同時に行われると NullPointerException が発生する。
Caused by: java.lang.NullPointerException at javassist.CtClassType.getFieldsCache(CtClassType.java:784) at javassist.CtClassType.getDeclaredFields(CtClassType.java:770) at org.seasar.framework.util.ClassUtil.getDeclaredFields(ClassUtil.java:361) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.getFields(EntityMetaFactoryImpl.java:243) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.doPropertyMeta(EntityMetaFactoryImpl.java:213) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.createEntityMeta(EntityMetaFactoryImpl.java:142) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.getEntityMetaInternal(EntityMetaFactoryImpl.java:117) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.checkMappedBy(EntityMetaFactoryImpl.java:308) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.resolveRelationship(EntityMetaFactoryImpl.java:285) at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.getEntityMeta(EntityMetaFactoryImpl.java:97) at org.seasar.extension.jdbc.query.AutoSelectImpl.prepareEntityMeta(AutoSelectImpl.java:513) at org.seasar.extension.jdbc.query.AutoSelectImpl.prepareTarget(AutoSelectImpl.java:369) at org.seasar.extension.jdbc.query.AutoSelectImpl.prepare(AutoSelectImpl.java:352) at org.seasar.extension.jdbc.query.AbstractSelect.getSingleResult(AbstractSelect.java:179)
Javassist 3.4.0 の CtClassType がスレッドセーフになっていないのが原因 (3.14.0 では修正されていた) だが、Seasar2 側で排他制御する。