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

时间:2015-11-18 08:01:24

标签: playframework playframework-2.0 playframework-2.3 ebean

我正在使用带有播放框架的Ebean(v2.3.4)。这是我的模特:

public function up()
    $tableNames = Yii::$app->db->schema->tableNames;

    foreach ($tableNames as $tableName) {
        Yii::$app->db->createCommand('ALTER TABLE '.$tableName.' ENGINE = InnoDB')->query();
    }
}

我需要为每个@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); } 限制notifications的数量。有没有办法自动使用Ebean?

我需要的是,如果单个user的{​​{1}}个记录数增加到50以上,那么最旧的记录将被删除(即50个以上的新记录'替换'最旧的记录记录)

1 个答案:

答案 0 :(得分:1)

不,这是不可能的,Ebean是一个ORM所以它没有带来任何逻辑(这显然是为什么它应该?)。

相反,你需要在你的应用程序中使用ie Akka Scheduler,它会定期为所有用户执行清理,或者你也可以在每个/第n个保存操作中添加这样的 cropping ,即通过覆盖{模型中的{1}}方法。