昨日のエラーはHerokuがLombokに対応していないことが原因だったようだ。@Gettet
, @setter
が生成されてなかったからね。それでエンティティが生成されるようにするためにプラグインを入れようとした訳だがMavenに対応していなかったからビルドツールをGradleに移行。
そのついでにJDKもアップグレードさせようと思ってOpenJDK 15をインストールしてパスを通したり設定を変更したりしたが次はO/RマッパーのHibernateに問題が発生してしまった。公式サイトを見ると5.4(stable版)でバージョンは8か11とのこと(JPAは2.2)。せっかく環境構築したのにやり直し。迷ったが長期サポートがあるAmazon Corretto 11に決めた。
私の頭の中では、これで上手くデプロイできるはずだった。しかし、まだ500エラーが出てくる。おかしいな。本来であれば古いバージョンでも良いのだけど、私は新しいものが好きだから最新バージョンを選択した。これは身から出た錆であり、自分で最後まで処理しなければならない。悩まされるエラーは大抵データベース関連だ。一応エラー文のメモ↓
HTTPステータス 500 – Internal Server Error
タイプ 例外報告
メッセージ [PersistenceUnit: tipswatch] Unable to build Hibernate SessionFactory
説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。
例外
javax.persistence.PersistenceException: [PersistenceUnit: tipswatch] Unable to build Hibernate SessionFactory
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:970)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:895)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
根本原因
org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
根本原因
org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91)
org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)
org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:385)
org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)
org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
根本原因
java.lang.reflect.InvocationTargetException
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88)
org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)
org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:385)
org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)
org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
根本原因
java.lang.NullPointerException
javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:103)
javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:151)
javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:134)
javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:131)
javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:530)
javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:515)
javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:451)
javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:422)
org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:75)
org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:156)
org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:58)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88)
org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)
org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:385)
org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)
org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
注意 原因のすべてのスタックトレースは、サーバのログに記録されています
Apache Tomcat/9.0.41
ライブラリをインストールした後↓
HTTPステータス 500 – Internal Server Error
タイプ 例外報告
メッセージ Unable to locate persistence units
説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。
例外
javax.persistence.PersistenceException: Unable to locate persistence units
org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:95)
org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
根本原因
javax.persistence.PersistenceException: Unrecognized persistence.xml version [2.2]
org.hibernate.jpa.boot.internal.PersistenceXmlParser.validate(PersistenceXmlParser.java:491)
org.hibernate.jpa.boot.internal.PersistenceXmlParser.loadUrl(PersistenceXmlParser.java:445)
org.hibernate.jpa.boot.internal.PersistenceXmlParser.parsePersistenceXml(PersistenceXmlParser.java:247)
org.hibernate.jpa.boot.internal.PersistenceXmlParser.parsePersistenceXml(PersistenceXmlParser.java:240)
org.hibernate.jpa.boot.internal.PersistenceXmlParser.doResolve(PersistenceXmlParser.java:234)
org.hibernate.jpa.boot.internal.PersistenceXmlParser.locatePersistenceUnits(PersistenceXmlParser.java:71)
org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:91)
org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
utils.DBUtil._getEntityManagerFactory(DBUtil.java:17)
utils.DBUtil.createEntityManager(DBUtil.java:12)
filters.IdeasCntFilter.doFilter(IdeasCntFilter.java:30)
注意 原因のすべてのスタックトレースは、サーバのログに記録されています
Apache Tomcat/9.0.41
persistence.xml version [2.2]
がおかしいっぽいな。