gpt4 book ai didi

java - java playframework 的 Yaml fixtures 不能按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:44 25 4
gpt4 key购买 nike

我试图制作 zenTasks play-java框架的教程(我使用当前的playframework,它是2.3.2)。当涉及到测试和添加固定装置时,我有点迷路了!该文档指出

Edit the conf/test-data.yml file and start to describe a User:

- !!models.User
email: bob@gmail.com
name: Bob
password: secret
...

我应该下载一个样本(实际上是一个死链接!)

所以我尝试自己添加更多这样的用户:

- !!models.User
email: somemail1@example.com
loginName: test1

- !!models.User
email: somemail2@example.com
loginName: test2

如果我然后尝试通过

加载它
Object load = Yaml.load("test-data.yml");
if (load instanceof List){
List list = (List)load;
Ebean.save(list);
} else {
Ebean.save(load);
}

我得到以下异常:

[error] Test ModelsTest.createAndRetrieveUser failed: java.lang.IllegalArgumentException: This bean is of type [class java.util.ArrayList] is not enhanced?, took 6.505 sec [error] at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveRecurse(DefaultPersister.java:270) [error] at com.avaje.ebeaninternal.server.persist.DefaultPersister.save(DefaultPersister.java:244) [error] at com.avaje.ebeaninternal.server.core.DefaultServer.save(DefaultServer.java:1610) [error] at com.avaje.ebeaninternal.server.core.DefaultServer.save(DefaultServer.java:1600) [error] at com.avaje.ebean.Ebean.save(Ebean.java:453) [error]
at ModelsTest.createAndRetrieveUser(ModelsTest.java:18) [error]
...

我应该如何加载多个用户(或任何我想要的对象)并毫无异常(exception)地解析它们?

最佳答案

Ebean 类中 save 方法被重载。

  1. save(Object) - 期望参数是实体(扩展 Model,具有 @Entity 注释)
  2. save(Collection) - 需要实体集合。

Yaml.load 函数返回的对象可以是:

  1. 实体
  2. 实体列表

但是如果我们简单地做:

Object load = Yaml.load("test-data.yml");
Ebean.save(load);

然后 save(Object) 方法将被调用。这是因为在编译时编译器不知道 Yaml.load 究竟会返回什么。因此,当“test-data.yml”文件中有一个以上的用户时,上面的代码将抛出异常。

但是当我们按照 OP 提供的代码将结果转换为 List 时,一切正常。 save(Collection) 方法被调用,所有实体都被正确保存。所以问题的代码是正确的。

关于java - java playframework 的 Yaml fixtures 不能按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com