2017-05-17 61 views
0

我创建了一个存储库,但是当我调用我的存储库时,它每次都会给出一个NullPointerException。有人可以帮我弄清楚为什么?CrudRepository上的NullPointerException

我的仓库

@Repository 
public interface WorkflowObjectRepository extends CrudRepository<WorkflowObject, String> { 

    @Override 
    WorkflowObject findOne(String id); 

    @Override 
    void delete(WorkflowObject workflowObject); 

    @Override 
    void delete(String id); 

    @Override 
    WorkflowObject save(WorkflowObject workflowObject); 

} 

我的对象

@Data 
@Entity 
@Table(name = "workflowobject") 
public class WorkflowObject { 

    @GeneratedValue 
    @Column(name="id") 
    private String id; 

    @Column(name = "state_name") 
    private String stateName; 

} 

我的测试

public class Test { 

    @Autowired 
    static WorkflowObjectRepository subject; 

    public static void main(String[] args) { 

     final WorkflowObject obj = new WorkflowObject(); 
     obj.setId("maha"); 
     obj.setStateName("test"); 
     subject.findOne("maha"); 
    } 

} 

application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/vtr? 
autoReconnect=true 
spring.datasource.username=vtr 
spring.datasource.password=vtr 
+2

可能重复的[什么是空指针异常,怎么解决呢?(http://stackoverflow.com/questions/218384/what-is -a-nullpointerexception-and-how-do-i-fix-it) –

+0

你能提供堆栈跟踪吗? –

回答

1

问题是你想自动装配静态数据成员

@Autowired 
static WorkflowObjectRepository subject; 

在你的情况下会发生什么事是静态的是越来越豆,因此,您对空自动装配初始化,只是删除静态和处理它作为实例变量。

库是singletones所以没有点使得它们的静态

+0

当我删除静态,日食给我一个'错误不能静态引用到非静态字段主题'为subject.findOne(“测试”); –

+0

是的,你现在需要处理你的服务作为一个实例变量不是静态的 –