gpt4 book ai didi

java - JPA.withTransaction 执行其他 Controller 方法错误 : Global. java:39: 错误: 'void' 此处不允许类型

转载 作者:行者123 更新时间:2023-12-01 12:09:07 24 4
gpt4 key购买 nike

我正在尝试在某些时间间隔内执行一些数据库插入/更新查询。

为了实现这一目标,我决定使用 Akka Actor 系统中内置的 Playframework。

我的类(class)有方法:

public class Global extends GlobalSettings {
@Override
public void onStart(Application application) {
Akka.system().scheduler().schedule(
Duration.create(1, TimeUnit.SECONDS), // start task delay
Duration.create(24, TimeUnit.HOURS), // between task instance delay
//Duration.create(24, TimeUnit.HOURS), // between task instance delay
new Runnable() {
@Override
public void run() {
JPA.withTransaction(
ImportCrmData.start()
);
}
},
Akka.system().dispatcher()
);

以及actor系统调用的方法:

public class ImportCrmData extends Controller {
@Transactional
public static void start() {
List<Customer> customersToUpdate = CustomerCRM.importCrmData();
for(Customer c: customersToUpdate) {
c.toDataBase();
}
}
}

我在编译时遇到错误:

[error] app/modules/common/app/Global.java:39: error: 'void' type not allowed here ImportCrmData.start()

据我所知,问题的发生是因为 JPA.withTransaction() 要求我从 ImportCrmData.start() 返回返回Callback0Function0<> ,但我不知道该怎么做。

我的方法就是做this.persist 。为什么我应该从中返回一些东西?

最佳答案

ImportCrmDatacontroller因此它必须返回一个有效的 http 响应(结果)。典型用例:

public class CustomerController extends Controller {

public static Result getCustomers() {
List<Customer> customers = CustomerService.getCustomers();
return ok(Json.toJson(customers));
}

}

上面的示例由 Controller 组成,它是应用程序的入口点,并对客户端请求使用react。 CustomerService 封装了与获取客户相关的逻辑。 ok(...) 返回 Result 的实现 - 一个有效的 http 响应,代码为 200,在上述场景中为 json 正文。它在 Controller 基类中实现。接下来,您的 Controller 可以在 routes 文件中映射到如下 URL:

GET /customers controller.CustomerController.getCustomers

应用上面的模式你应该有:

  • CrmController - 入口点
  • CrmService - 实际业务逻辑

这种分离允许在 Global 类以及 Controller 层中使用 CrmService,而无需重复逻辑。请注意,这只是一个建议。

关于java - JPA.withTransaction 执行其他 Controller 方法错误 : Global. java:39: 错误: 'void' 此处不允许类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374339/

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