Взаимно ссылочные поля в Play - PullRequest
1 голос
/ 29 февраля 2012

Я пытаюсь смоделировать пользователей с домашними каталогами в моей системе.Я получил следующие объявления модели:

@Entity
public class Directory extends Model {
  public String name;
  @ManyToOne public Directory parent;
  @ManyToOne public User owner;
  @OneToMany public Set<User> sharees;
}

@Entity
public class User extends Model {
  @Unique @Column(unique=true) public String username;
  public String password;
  public Directory homeDirectory;

  public User(String username, String password) {
    this.username = username;
    this.password = password;
    this.homeDirectory = new Directory(username, null, this);
  }
}
  1. Когда я создаю пользователя и вызываю .save (), я получаю сообщение об ошибке (исключение javax.persistence.PersistenceException, org.hibernate.exception.GenericJDBCException: не удалось вставить: [models.User]).Кто-нибудь может объяснить почему?

  2. Могу ли я проверить это с помощью приборов?Мне нужно создать прямые ссылки в моем файле yaml, но я не уверен, возможно ли это.

Спасибо,

Винсент.

1 Ответ

2 голосов
/ 01 марта 2012
  1. Ошибка выдается из-за отсутствия @OneToOne аннотации для homeDirectory.
    Я предполагаю, что вы создаете каталог для каждого пользователя. Если это так, то вам также следует использовать CascadeType.ALL, чтобы эти каталоги автоматически создавались / удалялись при создании / удалении пользователей.
  2. И ни один Yaml не поддерживает прямые ссылки,
    так что вам придется обойти это при использовании двунаправленных отношений.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...