Ebean并没有与Play-2.5(OneToMany)级联

时间:2016-08-05 04:26:18

标签: postgresql playframework ebean

以下是我的模特。

用户:

@Entity
@Table(name="users")
public class User extends Model {
  String username;
  @Id
  String id;
  @OneToMany(cascade = CascadeType.ALL)
  List<Tag> tags;
}

标签:

@Entity
@Table(name="tags")
public class Tag extends Model {

  @Constraints.Required
  public String tag;
}

持久性代码(删除不必要的代码):

User user = new User();
user.id = UUID.randomUUID().toString();
user.username = username; // String
user.tags = tags; // list of tags;
Ebean.save(user);

在向用户对象添加标签后,我正在调用 Ebean.save(用户)。 在用户上添加的标签不会持久保存到数据库。我也没有看到任何异常,用户的其他字段得到持久但不是标签。 我错过了什么吗?

注意:我使用的是postgres。

1 个答案:

答案 0 :(得分:1)

感谢@marcospereira的建议。 我在Tag模型中缺少id字段。启用调试和SQL日志记录后,我注意到日志中的警告。 创建Tag类的正确方法:

@Entity
@Table(name="tags")
public class Tag {
  @Id
  @GeneratedValue
  public String id;
  public String tag;
}

但是为什么Ebean会这样做很奇怪。

希望这有助于将来。