当前位置: 首页 > 知识库问答 >
问题:

在play 2.0中加载initial-data.yml时出现的问题

管梓
2023-03-14
#Users
users:
    - !!models.User
        email:      bob@gmail.com
        password:   secret
        fullname:   Bob
        isAdmin:    true
#Posts

posts:

    - !!models.Post
        id:         1
        title:      About the model layer
        postedAt:   2009-06-14
        author:     
            - !!models.User
                email: bob@gmail.com
        content:    >
                    The model has a central position in a Play! application. Cut....   

下面是我的global.java

public void onStart(Application app) {
        InitialData.insert(app);
    }

    static class InitialData {
        public static void insert(Application app) {
            if(Ebean.find(User.class).findRowCount() == 0) {
                Map<String, List<Object>> all = (Map<String, List<Object>>)Yaml.load("initial-data.yml");
                Ebean.save(all.get("users"));
                Ebean.save(all.get("posts"));
                Ebean.save(all.get("comments"));
            }
        }
    }

加载时,我收到以下错误

ConstructorException:null;不能为标记构造java对象:yaml.org,2002:models.post;Exception=无法为javabean=model.post@1创建property=author;找不到适合类模型的具有3个参数的构造函数。用户

org.yaml.snakeyaml.constructor.ConstructorException: null; Can't construct a java object for tag:yaml.org,2002:models.Post; exception=Cannot create property=author for JavaBean=models.Post@1; No suitable constructor with 3 arguments found for class models.User

     org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:333)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:183)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructSequenceStep2(BaseConstructor.java:277)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructSequence(BaseConstructor.java:248)

     org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlSeq.construct(SafeConstructor.java:440)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:183)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:326)

     org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:143)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:307)

     org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:459)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:183)

     org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:142)

     org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:128)

     org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)

     org.yaml.snakeyaml.Yaml.load(Yaml.java:411)

知道为什么会这样吗?

共有1个答案

徐唯
2023-03-14

曼纽尔,谢谢你的帮助。

当我对YAML稍作修改时,我只是去掉了“-”,它位于“model.class”前面。

#Users
users:
    - !!models.User
        email:      bob@gmail.com
        password:   secret
        fullname:   Bob
        isAdmin:    true
#Posts

posts:

    - !!models.Post
        id:         1
        title:      About the model layer
        postedAt:   2009-06-14
        author: !!models.User
                email: bob@gmail.com
        content:    >
                    The model has a central position in a Play! application. Cut....   

知道“-”代表什么吗?

 类似资料:
  • 问题内容: 我需要为应用程序的某些部分向现有应用程序添加插件功能。我希望能够在运行时添加jar,并且应用程序应该能够从jar中加载类,而无需重新启动应用程序。到目前为止,一切都很好。我使用URLClassLoader在线找到了一些示例,并且运行良好。 我还希望能够在罐子的更新版本可用时重新加载相同的类。我再次发现了一些示例,据我所知,实现此目标的关键是我需要为每个新负载使用一个新的类加载器实例。

  • 问题内容: 加载freemarker模板时,我得到一个文件未找到异常,即使该模板实际上存在于路径中。 更新:它正在作为Web服务运行。它将基于搜索查询将xml返回给客户端。当我从另一个Java程序(从静态main)调用模板时,模板成功加载。但是当客户端请求xml时,发生FileNotFoundException。 操作系统:Windows 7文件的绝对路径:C:/ Users / Jay / wo

  • 在java.util.scanner.throwfor(未知源)在java.util.scanner.next(未知源)在java.util.scanner.nextint(未知源)在java.util.scanner.nextint(未知源) 文件顺序:string string int int int

  • 问题内容: 由于内容类型冲突,我无法将Django固件加载到我的MySQL数据库中。首先,我尝试仅从我的应用程序中转储数据,如下所示: 但由于我的应用程序“ escola”使用了其他应用程序中的表,所以我一直没有遇到外键问题。我一直在添加其他应用程序,直到我明白了: 现在的问题是,当我尝试将数据加载为测试装置时,违反了以下约束条件: 问题答案: 将使用更持久的外键表示形式。在Django中,它们被

  • 我正在创建一个Spring Boot应用程序,由于业务原因,我需要导入一个第三方jar,该jar还从名为application.properties的文件中读取一些配置参数。 我已经在spring boot application.properties文件中定义了应用程序和第三方jar所需的所有配置。 例外情况: