从数据库读取时,我想基于两个因素对Post实体进行排序:
>喜欢数(越多越好)
>年龄(越新越好)
目前我已经这样实现了(作为计算值):
@Entity
public class Post {
// divide timestamp by a day length so after each day score decrements by 1
@Formula("UNIX_TIMESTAMP(creation_date_time) / 24 * 60 * 60 * 1000 + likes_count")
private long score;
@CreationTimestamp
private LocalDateTime creationDateTime;
@Min(0)
private long likesCount;
}
它工作正常但可能不是最好的方法,因为:
>我认为RDBMS不能为得分属性制作任何索引.
>硬编码函数UNIX_TIMESTAMP()特定于MysqL.因此,如果我想在我的测试环境中使用另一个数据库(比如H2),这将导致问题.
最佳答案