使用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);
}
我需要限制每个 user
的 notifications
的数量。有没有办法使用 Ebean 自动完成?
我需要的是,如果单个 user
的 notifications
记录数量超过 50,那么最旧的记录将被删除(即新记录超过 50 'replace' 最早的记录)
不,这是不可能的,Ebean 是一个 ORM,因此它不会带来任何逻辑(这很明显为什么它应该?)。
相反,您需要在您的应用中使用 Akka Scheduler,它将定期为所有用户执行清理,或者您也可以在 every/n-th 保存处添加这样的 cropping操作,即通过覆盖模型中的 save()
方法。
我正在将 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);
}
我需要限制每个 user
的 notifications
的数量。有没有办法使用 Ebean 自动完成?
我需要的是,如果单个 user
的 notifications
记录数量超过 50,那么最旧的记录将被删除(即新记录超过 50 'replace' 最早的记录)
不,这是不可能的,Ebean 是一个 ORM,因此它不会带来任何逻辑(这很明显为什么它应该?)。
相反,您需要在您的应用中使用 Akka Scheduler,它将定期为所有用户执行清理,或者您也可以在 every/n-th 保存处添加这样的 cropping操作,即通过覆盖模型中的 save()
方法。