14

我遵循 zentask 教程并编写了一个 junit 测试,该测试不会从 eclipse IDE 运行它给出以下异常

javax.persistence.PersistenceException: java.lang.IllegalStateException: Class [class play.db.ebean.Model] is enhanced and [class models.User] is not - (you can not mix!!)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1475)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1138)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1058)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:565)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:252)
    at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:124)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:210)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:64)

我读了一点,发现对于一些编辑 buils.scala 的人在 main 中添加以下行有帮助:ebeanEnabled := true

对我来说,它并没有关闭 ide 运行 play clean compile

有任何想法吗???

4

3 回答 3

15

一篇关于设置单元测试以在 IDE 中运行的博客文章。它建议将以下命令行添加到运行测试时使用的 java:

-javaagent:/path/to/ebean/ebean-2.7.3-agent.jar

似乎 Play 没有附带 ebean 代理,它应该首先从 Ebean 网站下载(在主 ebean 包中)。

我没试过。

Ebean 用户指南也提到了它(15.5.2 javaagent部分),甚至还有配置 Eclipse 的示例。

此外,为了加快增强,也许这会更好:

-javaagent:/path/to/ebean/ebean-2.7.3-agent.jar;packages=models.*

所以它只会查看models.*(Play 中 ORM 模型的默认包)。

于 2013-02-17T13:34:09.100 回答
6

您可以使用 Avaje Ebean Eclipse 插件:

http://www.avaje.org/eclipseupdate/site.xml

安装后,通过右键单击您的项目并选择启用 Ebean 增强来激活 Ebean 增强。

于 2014-01-30T10:01:04.207 回答
0

当我尝试从扩展 Model 的类之一的声明中删除 public 修饰符时出现此错误。

我正在使用一个模型来制作一个“通过”表(与附加信息的多对多关系),因此受保护的访问是有意义的。也许还有另一种方法可以做到这一点,但玩 javadoc 非常稀少。

于 2014-01-25T17:20:38.870 回答