gpt4 book ai didi

java - 如何安排一天一次的 Hibernate 程序

转载 作者:行者123 更新时间:2023-12-01 22:11:48 25 4
gpt4 key购买 nike

我正在将 Spring REST 与 Hibernate 结合使用,并且我开发了一个程序,其中数据来自数据库计算,并将其更新到数据库中的另一个表中。但我想在一天的给定时间运行这个程序一次,因为我只想一天计算一次结果。我怎样才能做到这一点?

这是我的DAO类(class)

@SuppressWarnings({ "unchecked", "rawtypes" })
public List<Result> getPostList() throws Exception {
session = sessionFactory.openSession();
tx = session.beginTransaction();

Criteria cr = session.createCriteria(Post.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.sum("val"), "topValue");
projList.add(Projections.groupProperty("userId"), "uid");
cr.addOrder(Order.desc("topValue"));
cr.setProjection(projList);
cr.setResultTransformer(Transformers.aliasToBean(Result.class));
List<Result> postList = cr.list();
// please make sure that you are using the class field name rather than database field name in below query.
String updateHql = "update Result set topValue = :topValue where id = :uid";
Query query = null;
int count = 1;
for(Result result : postList){
query=session.createQuery(updateHql);
// query.setLong("topValue", result.getTopValue());
query.setLong("topValue", count);
query.setLong("uid", result.getUid());
count++;
query.executeUpdate();
session.flush();
}

session.flush();
tx.commit();
return postList;
}

这是我的 Controller

@RequestMapping(value = "/posts", method = RequestMethod.GET)
public @ResponseBody
List<Result> getEmployee() {

List<Result> postList = null;
try {
postList = profileService.getPostList();

} catch (Exception e) {
e.printStackTrace();
}

return postList;
}

最佳答案

http://quartz-scheduler.org/
你需要一个调度程序。您可以在 spring 中配置每天安排的方法,如下所述:

1) 在 spring 配置中:

<task:scheduler id="scheduler" pool-size="10" />
<task:executor id="executor" pool-size="10" />

<task:annotation-driven scheduler="scheduler" executor="executor" />

2)启用注释:

<context:component-scan annotation-config="true" base-package="" />

3)在需要调度的方法上加上@Scheduled注解

@Scheduled(cron="0 0 12 * * ?")
public void scheduledTask(){
}

以上 cron 表达式将在每天中午 12 点(中午)安排该方法。
一些通用 cron 表达式的链接:http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

关于java - 如何安排一天一次的 Hibernate 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com