Ошибка загрузки данных модели из файла YAML - PullRequest
0 голосов
/ 01 января 2012

Я пытаюсь загрузить модель из файла 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 ]

2 голосов
/ 01 января 2012

убедитесь, что вы используете только пробелы и без вкладок в файле yaml.

вам также нужно иметь открытый конструктор без аргументов .свойства не могут быть окончательными , и если вы сделаете их приватными, вам нужно будет предоставить для них установщик.

на заметке: вы не должны хэшировать свои паролис md5.это риск для безопасности (rainbowtables)

1 голос
/ 02 января 2012

Я считаю, что проблема в том, что ваши пользовательские свойства помечены как окончательные и закрытые.Из игровой документации вы можете прочитать:

Соглашение состоит в том, что любое открытое, не статичное, не финальное поле класса рассматривается как свойство.

...