繁体   English   中英

从YAML文件加载模型数据时出现问题

[英]Issue loading model data from YAML file

我正在尝试从Yaml文件加载模型。 内容是:

  #test data

   User(marchaos):
       username:     marchaos
       email:        marchaos@email.com
       passwordHash: cf6dd541822b1b3d2d23c92adda75211

该模型如下所示。

@Entity
public class User extends Model
{
    @Unique
    @Required
    private final String username;

    @Email
    @Required
    private final String email;

    @Required
    private final String passwordHash;

    public User(String username, String email, String password)
    {
        this.username = username;
        this.email = email;
            //TODO: salt
        this.passwordHash = Codec.hexMD5(password);
    }

    public String getUsername()
    {
        return username;
    }

    public String getEmail()
    {
        return email;
    }
}

YAML文件加载在Bootstrap类中:

Fixtures.loadModels("User.yml");

用户看起来像已创建,但所有字段均为空:

System.out.println(((User) User.all().first()).getUsername());
// prints null

知道为什么用户没有数据吗? 如果我使用构造函数创建用户,则该用户数据存在。

确保您的yaml文件中仅使用空格没有选项卡

您还需要一个公共的无参数构造函数 不允许属性设置为最终属性 ,如果将它们设为私有,则必须为其提供设置器。

附带说明:您不应使用md5哈希密码。 这是一个安全风险(彩虹表)

我认为问题在于您的User属性被标记为final和private。 播放文档中,您可以阅读:

习惯上,将类的任何公共,非静态,非最终字段视为属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM