【问题标题】:Mutually referential fields in PlayPlay 中的相互引用字段
【发布时间】:2012-02-29 14:56:27
【问题描述】:

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

@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() 时,我得到一个错误(A javax.persistence.PersistenceException has been catched, org.hibernate.exception.GenericJDBCException: could not insert: [models.User] )。谁能解释一下为什么?

  2. 使用夹具,我可以测试吗?我需要在我的 yaml 文件中创建前向引用,但我不确定这是否可行。

谢谢,

文森特。

【问题讨论】:

    标签: jpa playframework


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

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 2015-11-06
      • 2017-04-21
      • 2011-11-19
      • 1970-01-01
      • 2019-05-03
      • 2016-01-10
      • 2016-10-12
      相关资源
      最近更新 更多