有没有简单的解决方案在新线程中使用JPA将数据保存到数据库中?
我的基于Spring的Web应用程序允许用户管理计划任务.在运行时,他可以创建和启动预定义任务的新实例.我正在使用spring的TaskScheduler,一切运行良好.
但我需要将每个已触发任务的布尔结果保存到数据库中.我怎样才能做到这一点?
编辑:我必须概括我的问题:我需要从任务中调用我的@Service类的方法.因为在保存到数据库之前必须"处理"任务结果.
编辑2:我的问题代码的简化版本来到这里.从调度程序调用saveTaskResult()时,将打印出消息,但不会将任何内容保存到db中.但每当我从控制器调用saveTaskResult()时,记录都会正确保存到数据库中.
@Service
public class DemoService {
@Autowired
private TaskResultDao taskResultDao;
@Autowired
private TaskScheduler scheduler;
public void scheduleNewTask() {
scheduler.scheduleWithFixedDelay(new Runnable() {
public void run() {
// do some action here
saveTaskResult(new TaskResult("result"));
}
}, 1000L);
}
@Transactional
public void saveTaskResult(TaskResult result) {
System.out.println("saving task result");
taskResultDao.persist(result);
}
}
Run Code Online (Sandbox Code Playgroud) 什么是定义 JPA 实体 ID 的“kotlin 方式”?
@Entity
data class User (
@Id @GeneratedValue
var id: Long? = null,
...
)
Run Code Online (Sandbox Code Playgroud)
或者有没有更好的方法来避免可空 ID?
我将旧的xml/java配置转换为纯java配置.在xml中,我使用参数注入配置文件,如下所示:
<bean class="com.project.SpringRestConfiguration">
<property name="parameters" ref="parameters" />
</bean>
@Configuration
public class SpringRestConfiguration {
private Parameters parameters;
public void setParameters(Parameters parameters) {
this.parameters = parameters;
}
// @Bean definitions
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以在javaconfig中注入参数?(无需使用自动装配!)
@Configuration
@Import(SpringRestConfiguration.class)
Run Code Online (Sandbox Code Playgroud)
编辑:使用@Import,我看不到有任何机会将参数注入SpringRestConfiguration