使用ebean从数据库中删除最旧的记录

delete oldest records from database using ebean

我正在将 Ebean 与游戏框架 (v2.3.4) 一起使用。这是我的模型:

@Entity
public class User extends Model {

  @Id
  private Long id;

  ...

  @OneToMany(cascade = CascadeType.ALL)
  @JoinColumn(referencedColumnName = "id", name = "parentID")
  public List<Notification> notifications = new ArrayList<Notification>();

  private static Finder<Long, User> find = new Finder<>(Long.class, User.class);
}

我需要限制每个 usernotifications 的数量。有没有办法使用 Ebean 自动完成?

我需要的是,如果单个 usernotifications 记录数量超过 50,那么最旧的记录将被删除(即新记录超过 50 'replace' 最早的记录)

不,这是不可能的,Ebean 是一个 ORM,因此它不会带来任何逻辑(这很明显为什么它应该?)。

相反,您需要在您的应用中使用 Akka Scheduler,它将定期为所有用户执行清理,或者您也可以在 every/n-th 保存处添加这样的 cropping操作,即通过覆盖模型中的 save() 方法。