2017-05-17 88 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

是的,你現在需要處理你的服務作爲一個實例變量不是靜態的 –