Play中的相互引用字段

时间:2012-02-29 14:56:27

标签: jpa playframework

我正在尝试使用我的系统中的主目录为用户建模。我得到了以下模型声明:

@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文件中创建前向引用,但我不确定这是否可行。

  3. 谢谢,

    文森特。

1 个答案:

答案 0 :(得分:2)

  1. 由于@OneToOne缺少homeDirectory注释而引发错误 我假设您正在为每个用户创建一个目录。如果是这种情况,那么您还应该使用CascadeType.ALL,以便在创建/删除用户时自动创建/删除这些目录。
  2. 没有Yaml不支持前向引用,
    因此,在使用双向关系时,你必须解决这个问题。