2017-05-17 2 views
0

J'ai créé un référentiel mais quand j'appelle mon référentiel, il donne une exception NullPointerException à chaque fois. Quelqu'un peut-il m'aider à comprendre pourquoi?NullPointerException sur CrudRepository

Mon dépôt

@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); 

} 

Mon objet

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

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

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

} 

Mon test

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

double possible de [Qu'est-ce qu'un NullPointerException, et comment puis-je résoudre ce problème?] (Http://stackoverflow.com/questions/218384/what-is -a-nullpointerexception-et-comment-faire-je-fix-it) –

+0

pourriez-vous fournir le stacktrace? –

Répondre

1

Le problème est que vous essayez de lier automatiquement un membre de données statiques

@Autowired 
static WorkflowObjectRepository subject; 

Qu'est-ce qui se passe dans votre cas est statique devient initialisés avant le grain si vous Autowiring sur null, il suffit de retirer la statique et le traiter comme variable d'instance.

dépôts sont singletones donc pas de point de les rendre statique

+0

lorsque je supprime le statique, l'éclipse me donne une erreur "Impossible de faire une référence statique au sujet de champ non statique" pour subject.findOne ("test"); –

+0

ouais vous avez besoin de traiter votre service maintenant comme une variable d'instance non statique –