我们正在使用Play框架2.3.7,并使用sbt(sbt版本0.13.5)设置了一个多项目,该项目由四个模块组成。在项目根目录的build.sbt文件中,我们定义以下模块:
lazy val common = (project in file("modules/common")).enablePlugins(PlayJava, SbtWeb)
lazy val store = (project in file("modules/store")).enablePlugins(PlayJava, SbtWeb).dependsOn(common)
lazy val catalog = (project in file("modules/catalog")).enablePlugins(PlayJava, SbtWeb).dependsOn(common)
lazy val backend = (project in file("modules/backend")).enablePlugins(PlayJava, SbtWeb).dependsOn(common)
lazy val root = (project in file(".")).enablePlugins(PlayJava, SbtWeb).aggregate(common, store, catalog, backend).dependsOn(common, store, catalog, backend)
如果我们尝试使用
activator run
它会编译应用程序而不会出现错误。在主页上的第一个请求之后,它将重新开始编译整个项目,最多四次。这需要很长时间,但是之后一切正常。
那是什么原因导致项目经常编译呢?有人偶然发现了这个问题吗?
谢谢。
更新为使用ebean持久层播放2.3.7之后,我的项目中出现了相同的问题。
我注意到,尽管没有进行任何更改,但始终会重新编译某些类。这仅发生在@Entity
使用注解的类上@com.avaje.ebean.annotation.Transactional
。
不幸的是,改用注解@play.db.ebean.Transactional
不起作用,它不会在单个事务中执行数据库命令。不知道,它是否仍然存在错误,或者仅对控制器类有效,而对@Entity
-class无效。
但是,对我来说解决此问题的方法是使用一个try/finally
块来创建事务,如ebean-documentation中所述。
您是否恰巧使用ebean作为持久层?
删除@transactional
-annnotation是否可以解决您的问题?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句