java– 根据喜欢计数和创建时间对实体进行评分

java– 根据喜欢计数和创建时间对实体进行评分,第1张

概述从数据库读取时,我想基于两个因素对Post实体进行排序:>喜欢数(越多越好)>年龄(越新越好)目前我已经这样实现了(作为计算值):@Entity public class Post { // divide timestamp by a day length so after each day score decrements by 1

从数据库读取时,我想基于两个因素对Post实体进行排序:

>喜欢数(越多越好)
>年龄(越新越好)

目前我已经这样实现了(作为计算值):

@H_301_11@@Entitypublic 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),这将导致问题.最佳答案使用数据库触发器更新/维护这些侧聚合表.为这些事情运行繁重的预定工作(导致负载高峰)真的没有意义……

此外,WHERE子句下面永远不会使用索引.永远不能.

@H_301_11@UNIX_TIMESTAMP(creation_date_time) / 24 * 60 * 60 * 1000 + likes_count
总结

以上是内存溢出为你收集整理的java – 根据喜欢计数和创建时间对实体进行评分全部内容,希望文章能够帮你解决java – 根据喜欢计数和创建时间对实体进行评分所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1258218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存