EclipseLinkでLazy Loadingを設定していると、ときどき盛大にエラーを吐いてTomcatが起動失敗することがあります。
Exception [EclipseLink-0] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.IntegrityException Descriptor
Exceptions:
---------------------------------------------------------
Exception [EclipseLink-60] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setbelongArea_vh] or [_persistence_getbelongArea_vh] is not defined in the object [jp.root42.r42fw_sample_shop.model.entity.Shop].
Internal Exception: java.lang.NoSuchMethodException: jp.root42.r42fw_sample_shop.model.entity.Shop._persistence_getbelongArea_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[belongArea]
Descriptor: RelationalDescriptor(jp.root42.r42fw_sample_shop.model.entity.Shop --> [DatabaseTable(SHOP)])
Exception [EclipseLink-60] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setrole_vh] or [_persistence_getrole_vh] is not defined in the object [jp.root42.r42fw_sample_auth.model.entity.Permission].
Internal Exception: java.lang.NoSuchMethodException: jp.root42.r42fw_sample_auth.model.entity.Permission._persistence_getrole_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[role]
Descriptor: RelationalDescriptor(jp.root42.r42fw_sample_auth.model.entity.Permission --> [DatabaseTable(PERMISSION)])
Exception [EclipseLink-60] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setproductImage_vh] or [_persistence_getproductImage_vh] is not defined in the object [jp.root42.r42fw_sample_shop.model.entity.Product].
Internal Exception: java.lang.NoSuchMethodException: jp.root42.r42fw_sample_shop.model.entity.Product._persistence_getproductImage_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[productImage]
Descriptor: RelationalDescriptor(jp.root42.r42fw_sample_shop.model.entity.Product --> [DatabaseTable(PRODUCT)])
Exception [EclipseLink-60] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setworkingShop_vh] or [_persistence_getworkingShop_vh] is not defined in the object [jp.root42.r42fw_sample_shop.model.entity.Employee].
Internal Exception: java.lang.NoSuchMethodException: jp.root42.r42fw_sample_shop.model.entity.Employee._persistence_getworkingShop_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[workingShop]
Descriptor: RelationalDescriptor(jp.root42.r42fw_sample_shop.model.entity.Employee --> [DatabaseTable(EMPLOYEE)])
Exception [EclipseLink-60] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setrank_vh] or [_persistence_getrank_vh] is not defined in the object [jp.root42.r42fw_sample_shop.model.entity.Employee].
Internal Exception: java.lang.NoSuchMethodException: jp.root42.r42fw_sample_shop.model.entity.Employee._persistence_getrank_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[rank]
Descriptor: RelationalDescriptor(jp.root42.r42fw_sample_shop.model.entity.Employee --> [DatabaseTable(EMPLOYEE)])
Runtime Exceptions:
---------------------------------------------------------
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:477)
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:406)
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:666)
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:617)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:227)
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:255)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:111)うーん、何がなんだか、といった感じですね。
こういうときは、Tomcatワークディレクトリのクリーンをすると大丈夫な模様。
