我一直在尝试创建一个作业来删除数据库中的所有记录。这项工作与我的网络服务一起部署。在网络服务中,我可以轻松访问我的 EntityManager 并且到目前为止它没有任何问题。但是,每当我尝试在调度程序中访问 EntityManager 时,它都会给我 NullPointerException。
@Service
public class DeletionJob {
@PersistenceContext(unitName = "my_pu")
private EntityManager em;
@Scheduled(fixedDelay=10000)
public void run() {
boolean flag = false;
TypedQuery<Abc> query
= em.createNamedQuery("deleteAll",ABC.class);
}
}
这是我的课,但它在第二行运行方法上给了我例外。
@EnableWebMvc
@Configuration
@EnableScheduling
@ComponentScan({ "com.jobs.*" })
@javax.ws.rs.ApplicationPath("webresources")
public class AppConfig extends Application {
@Bean
public DeletionJob myDeletionJob() {
return new DeletionJob();
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver
= new InternalResourceViewResolver();
return viewResolver;
}
@Bean
public REST getService(){
return new REST();
}
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
addRestResourceClasses(resources);
return resources;
}
/**
* Do not modify addRestResourceClasses() method.
* It is automatically populated with
* all resources defined in the project.
* If required, comment out calling this method in getClasses().
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(com.service.REST.class);
// Tried to include deletionjob class here but, no luck still the same.
// resources.add(com.jobs.DeletionJob.class);
}
}
我没有任何配置文件。因为我正在使用注释。但是,我不确定我做错了什么。由于我的所有服务都运行良好,并且与数据库相关的事务没有问题。
编辑:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="my_pu" transaction-type="JTA">
<jta-data-source>ds</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
</persistence>