从YAML文件发出加载模型数据

时间:2012-01-01 17:03:38

标签: java playframework yaml

我正在尝试从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

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

2 个答案:

答案 0 :(得分:2)

确保您的yaml文件中仅使用空格无标签

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

旁注:您不应使用md5哈希密码。它的安全风险(rainbowtables)

答案 1 :(得分:1)

我认为问题在于您的用户属性被标记为final和private。从play documentation开始,您可以阅读:

  

惯例是任何公共的,非静态的,非最终的领域   阶级被视为财产。