2

我在 Play 2 中使用 JPA。在我的 Build.scala 中,我有以下内容:

object ApplicationBuild extends Build {

  val appName = "weasel"
  val appVersion = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    javaCore,
    javaJdbc,
    javaJpa,
    "org.hibernate" % "hibernate-entitymanager" % "4.1.7.Final"
  )

  val main = play.Project(appName, appVersion, appDependencies).settings(
    ebeanEnabled := false
  )
}

一个非常简单的模型:

import javax.persistence.*;
@Entity
@Table(name = "event")
public class Event {
    @Id
    @Column(name = "EVENT_NO")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    @Column(name = "EVENT_OUTPUT_LOG", length = 250)
    private String message;

    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
}

标准 application.conf 配置:

db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit
db.default.logStatements=true
# ebean.default="models.*"
evolutionplugin=disabled

执行标准选择时SELECT e FROM Event e,我看到它正在执行以下查询:

select event0_.EVENT_NO as EVENT1_4_,
event0_._ebean_intercept as column2_4_,
event0_.EVENT_OUTPUT_LOG as EVENT3_4_ 
from EVENT event0_

为什么要这样做?我已经告诉它不要使用 ebeans。我也做了一个干净的编译......但它没有改变任何东西。

先感谢您。

4

3 回答 3

3

从 Build.sbt 中删除javaEbean依赖项似乎可以解决问题。当 ebeanEnabled 设置为 false 时,我不知道为什么 play 首先使用 ebean。

于 2014-02-06T06:08:54.203 回答
2

好吧,我遇到了同样的问题,我尝试删除javaEbean,但这导致项目无法编译。

我删除了 build.sbt 中的 ebean 增强功能,ebeanEnabled := false但没用我删除了 application.conf 中
的行ebean.default="models.*,但也没有用

最后,我决定将包的名称从 to 更改modelsmodel并做到了,不再存在来自不存在列的选择和空指针异常。

于 2014-04-11T01:08:55.817 回答
0

按照@armk7 的建议从Build.sbt 中删除javaEbean 依赖项解决了我的问题,但是在删除依赖项后,我得到了Ebean 类的ClassNotFounException。这是因为我没有运行 activator clean,所以很少有类文件正在导入 ebean 文件。如果您遇到同样的问题,请执行以下操作:- activator clean activator reload activator compile

于 2015-05-07T11:38:04.283 回答