Java Heroku上的Play1应用程序未选择带有Hibernate@FilterDef注释的型号/package-info.class
当我使用OracleJDK8在本地机器上以开发模式运行应用程序并播放v1.3.1-56-gac02587时,models/package-info.class中定义的@FilterDef注释被正确拾取,应用程序按预期执行 models/package-info.java的定义如下:Java Heroku上的Play1应用程序未选择带有Hibernate@FilterDef注释的型号/package-info.class,java,hibernate,heroku,annotations,playframework-1.x,Java,Hibernate,Heroku,Annotations,Playframework 1.x,当我使用OracleJDK8在本地机器上以开发模式运行应用程序并播放v1.3.1-56-gac02587时,models/package-info.class中定义的@FilterDef注释被正确拾取,应用程序按预期执行 models/package-info.java的定义如下: @FilterDef(name="softDelete", defaultCondition="(deleteTimestamp is null or deleteTimestamp > now())") p
@FilterDef(name="softDelete", defaultCondition="(deleteTimestamp is null or deleteTimestamp > now())")
package models;
import org.hibernate.annotations.FilterDef;
但是,当我将应用程序部署到运行OpenJDK8的Heroku上时,以及它在生产模式下运行的同一播放版本,我得到了以下异常。似乎未拾取在package level@FilterDef注释中定义的默认筛选条件,这表明没有成功加载models/package-info.class
11-09-15 17:55:51,699 [main] ERROR play
Can't start in PROD mode with errors
javax.persistence.PersistenceException: Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:925)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900)
at play.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:208)
at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:515)
at play.Play.start(Play.java:537)
at play.Play.init(Play.java:309)
at play.server.Server.main(Server.java:160)
Caused by: org.hibernate.AnnotationException: no filter condition found for filter softDelete in CommunityMember
at org.hibernate.cfg.annotations.EntityBinder.bindEntity(EntityBinder.java:388)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:602)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3625)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3579)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1381)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1786)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:918)
... 6 more
11-09-15 17:55:51699[主]错误播放
无法在PROD模式下启动,出现错误
javax.persistence.PersistenceException:无法构建EntityManagerFactory
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:925)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900)
atplay.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:208)
在播放中.plugins.PluginCollection.onApplicationStart(PluginCollection.java:515)
play.play.start(play.java:537)
play.play.init(play.java:309)
at play.server.server.main(server.java:160)
原因:org.hibernate.AnnotationException:在CommunityMember中未找到筛选器softDelete的筛选条件
位于org.hibernate.cfg.annotations.EntityBinder.bindEntity(EntityBinder.java:388)
位于org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:602)
位于org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3625)
位于org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3579)
位于org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1381)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1786)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:96)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:918)
... 还有6个
不同之处在于Heroku使用预编译类在生产模式下运行应用程序。当我使用“play run-Dprecompiled=true”在本地模拟时,我得到了相同的异常
$ play-13x run -Dprecompiled=true
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.3.x-1.3.1-43-g3d16160, https://www.playframework.com
~
~ Ctrl+C to stop
~
~ using java version "1.8.0_25"
objc[75867]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Listening for transport dt_socket at address: 8000
13:38:05,265 [main] INFO ~ Starting
:: loading settings :: url = jar:file:/usr/local/play-1.3.x-1.3.1-43-g3d16160/framework/lib/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
13:38:05,543 [main] INFO ~ Module crud is available (/usr/local/play-1.3.x-1.3.1-43-g3d16160/modules/crud)
13:38:05,543 [main] INFO ~ Module fastergt is available (/Users/chris/git/PTAsocial-MVP/modules/fastergt-1.8)
13:38:05,543 [main] INFO ~ Module db is available (/Users/chris/git/PTAsocial-MVP/modules/db-1.1.2)
13:38:05,544 [main] INFO ~ Module accesslog is available (/Users/chris/git/PTAsocial-MVP/modules/accesslog-1.2)
13:38:05,544 [main] INFO ~ Module deadbolt is available (/Users/chris/git/PTAsocial-MVP/modules/deadbolt-1.5.4)
13:38:05,544 [main] INFO ~ Module coffee is available (/Users/chris/git/PTAsocial-MVP/modules/coffee-1.0)
13:38:05,544 [main] INFO ~ Module securesocial is available (/Users/chris/git/PTAsocial-MVP/modules/securesocial-0.2.7)
13:38:05,544 [main] INFO ~ Module morphia is available (/Users/chris/git/PTAsocial-MVP/modules/morphia-1.5.0a)
13:38:05,760 [main] INFO ~ Loaded image cleaner plugin
13:38:06,817 [main] INFO ~ Application is precompiled
13:38:06,826 [main] DEBUG ~ MorphiaPlugin-1.5.0> reading configuration
13:38:08,072 [main] INFO ~ Connected to jdbc:h2:mem:play;MODE=MYSQL for default
13:38:08,253 [main] INFO ~ JPA -> Adding package: models
13:38:08,526 [main] ERROR ~ Can't start in PROD mode with errors
javax.persistence.PersistenceException: Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:925)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900)
at play.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:208)
at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:515)
at play.Play.start(Play.java:537)
at play.Play.init(Play.java:309)
at play.server.Server.main(Server.java:160)
Caused by: org.hibernate.AnnotationException: no filter condition found for filter softDelete in CommunityMember
at org.hibernate.cfg.annotations.EntityBinder.bindEntity(EntityBinder.java:388)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:602)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3625)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3579)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1381)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1786)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:918)
... 6 more
$play-13x run-Dprecompiled=true
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~z~玩吧!1.3.x-1.3.1-43-g3d16160,https://www.playframework.com
~
~Ctrl+C停止
~
~使用java版本“1.8.0_25”
objc[75867]:类JavaLaunchHelper在/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/Java和/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/libinstrument.dylib中实现。将使用其中一个。哪一个是未定义的。
正在侦听地址为8000的传输dt_插座
13:38:05265[主]信息~启动
::加载设置::url=jar:file:/usr/local/play-1.3.x-1.3.1-43-g3d16160/framework/lib/ivy-2.4.0.jar/org/apache/ivy/core/settings/ivysettings.xml
13:38:05543[主]信息~模块crud可用(/usr/local/play-1.3.x-1.3.1-43-g3d16160/模块/crud)
13:38:05543[main]信息~模块fastergt可用(/Users/chris/git/PTAsocial MVP/modules/fastergt-1.8)
13:38:05543[main]信息~模块数据库可用(/Users/chris/git/PTAsocial MVP/modules/db-1.1.2)
13:38:05544[main]信息~模块访问日志可用(/Users/chris/git/PTAsocial MVP/modules/accesslog-1.2)
13:38:05544[main]信息~模块死锁可用(/Users/chris/git/pta社会MVP/modules/deadbolt-1.5.4)
13:38:05544[main]信息~模块咖啡可用(/Users/chris/git/pta社交MVP/modules/coffee-1.0)
13:38:05544[main]信息~模块securesocial可用(/Users/chris/git/PTAsocial MVP/modules/securesocial-0.2.7)
13:38:05544[main]信息~模块morphia可用(/Users/chris/git/PTAsocial MVP/modules/morphia-1.5.0a)
13:38:05760[主]信息~加载的图像清理器插件
13:38:06817[主]信息~应用程序已预编译
13:38:06826[main]调试~MorphiaPlugin-1.5.0>读取配置
13:38:08072[main]INFO~连接到jdbc:h2:mem:play;默认情况下MODE=MYSQL
13:38:08253[main]INFO~JPA->添加包:型号
13:38:08526[main]错误~无法在有错误的PROD模式下启动
javax.persistence.PersistenceException:无法构建EntityManagerFactory
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:925)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900)
atplay.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:208)
在播放中.plugins.PluginCollection.onApplicationStart(PluginCollection.java:515)
play.play.start(play.java:537)
play.play.init(play.java:309)
at play.server.server.main(server.java:160)
原因:org.hibernate.AnnotationException:在CommunityMember中未找到筛选器softDelete的筛选条件
位于org.hibernate.cfg.annotations.EntityBinder.bindEntity(EntityBinder.java:388)
位于org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:602)
位于org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3625)
位于org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3579)
位于org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1381)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1786)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:96)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:918)
... 6.