空指针异常 仓库 Spring Boot JPA

huangapple go评论83阅读模式
英文:

NullPointer Exception Repository Spring Boot Jpa

问题

以下是您提供的代码的翻译部分:

主类:

@SpringBootApplication
public class ExampleApplication {
    
    @Autowired
    private static DataRepository dataRepository;
    
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
        System.out.println(dataRepository.findAll());
    }
}

模型:

@Entity
public class Data {
 
    @Id
    private Long id;
    private String content;
    
    public Data(Long id, String content) {
        super();
        this.id = id;
        this.content = content;
    }
    
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public String getContent() {
        return content;
    }
    
    public void setContent(String content) {
        this.content = content;
    }
    
    @Override
    public String toString() {
        return "Data [id=" + id + ", content=" + content + "]";
    }
}

仓库:

@Repository
public interface DataRepository extends JpaRepository<Data, Long> {
    
}

控制器:

@RestController
public class DataController {
    
    @Autowired
    private DataRepository dataRepository;
    
    @GetMapping("/show")
    public List<Data> findCities(Data data) {
        return dataRepository.findAll();
    }
}

错误信息:

2020-04-07 10:27:14.323  INFO 19892 --- [           main] com.example.demo.ExampleApplication      : 启动 ExampleApplication,进程ID为 19892(位于 C:\Users\David\Documents\workspace-spring-tool-suite-4-4.5.1.RELEASE\example\target\classes,由 David 在 C:\Users\David\Documents\workspace-spring-tool-suite-4-4.5.1.RELEASE\example 启动)
2020-04-07 10:27:14.326  INFO 19892 --- [           main] com.example.demo.ExampleApplication      : 未设置活动配置文件,回退到默认配置文件: default
2020-04-07 10:27:14.739  INFO 19892 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : 以默认模式引导 Spring Data JPA 仓库。
2020-04-07 10:27:14.794  INFO 19892 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : 在 48 毫秒内完成 Spring Data 仓库扫描。找到 1 个 JPA 仓库接口。
...

请注意,上述翻译可能不包括代码中的所有细节,但已涵盖您所提供的内容。如果您有任何问题或需要更多翻译,请随时告知。

英文:

I am making a basic application to send an insert to a database, as a test I have been executing a simple findAll () to test the repository, but it always gives me NullPointer
I am aware that it is something very basic and also that I am missing something.
Thank you.

This is the main

    @SpringBootApplication
public class ExampleApplication {
	
    @Autowired
    private static DataRepository dataRepository;
	
	public static void main(String[] args) {
		SpringApplication.run(ExampleApplication.class, args);
		System.out.println(dataRepository.findAll());

	}

}

Model

 @Entity
public class Data {
 
    @Id
    private Long id;
    private String content;
    
    
	public Data(Long id, String content) {
		super();
		this.id = id;
		this.content = content;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	@Override
	public String toString() {
		return &quot;Data [id=&quot; + id + &quot;, content=&quot; + content + &quot;]&quot;;
	}
}

Repository

    @Repository
public interface DataRepository extends JpaRepository&lt;Data, Long&gt; {
	    
}

Controller

 @RestController
public class DataController {

    @Autowired
    private DataRepository dataRepository;

    @GetMapping(&quot;/show&quot;)
    public List&lt;Data&gt; findCities(Data data) {

    
        return dataRepository.findAll();
    }
}

Error

2020-04-07 10:27:14.323  INFO 19892 --- [           main] com.example.demo.ExampleApplication      : Starting ExampleApplication on DESKTOP-ARNRCSA with PID 19892 (C:\Users\David\Documents\workspace-spring-tool-suite-4-4.5.1.RELEASE\example\target\classes started by David in C:\Users\David\Documents\workspace-spring-tool-suite-4-4.5.1.RELEASE\example)
2020-04-07 10:27:14.326  INFO 19892 --- [           main] com.example.demo.ExampleApplication      : No active profile set, falling back to default profiles: default
2020-04-07 10:27:14.739  INFO 19892 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-04-07 10:27:14.794  INFO 19892 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 48ms. Found 1 JPA repository interfaces.
2020-04-07 10:27:15.147  INFO 19892 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-04-07 10:27:15.261  INFO 19892 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-04-07 10:27:15.300  INFO 19892 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-04-07 10:27:15.363  INFO 19892 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.12.Final
2020-04-07 10:27:15.490  INFO 19892 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-04-07 10:27:15.588  INFO 19892 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL55Dialect
2020-04-07 10:27:15.832  INFO 19892 --- [           main] org.hibernate.tuple.PojoInstantiator     : HHH000182: No default (no-argument) constructor for class: com.example.demo.Data (class must be instantiated by Interceptor)
2020-04-07 10:27:16.057  INFO 19892 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-04-07 10:27:16.063  INFO 19892 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit &#39;default&#39;
2020-04-07 10:27:16.066  INFO 19892 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : Autowired annotation is not supported on static fields: private static com.example.demo.DataRepository com.example.demo.ExampleApplication.dataRepository
2020-04-07 10:27:16.417  INFO 19892 --- [           main] com.example.demo.ExampleApplication      : Started ExampleApplication in 2.399 seconds (JVM running for 3.041)
Exception in thread &quot;main&quot; java.lang.NullPointerException
	at com.example.demo.ExampleApplication.main(ExampleApplication.java:17)
2020-04-07 10:27:16.422  INFO 19892 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit &#39;default&#39;
2020-04-07 10:27:16.424  INFO 19892 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2020-04-07 10:27:16.428  INFO 19892 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource  

答案1

得分: 1

尝试一下这个:

尝试这个

    @SpringBootApplication
	public class ExampleApplication {
	    public static void main(String[] args) {
	     	ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
	     	DataRepository dataRepository = context.getBean(DataRepository.class);
	     	System.out.println(dataRepository.findAll());
	    }
	}

除非您使用`postConstruct`,否则无法在静态字段上使用`autowire`。
英文:

try this

@SpringBootApplication
public class ExampleApplication {
    public static void main(String[] args) {
     	ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
     	DataRepository dataRepository = context.getBean(DataRepository.class);
     	System.out.println(dataRepository.findAll());
    }
}

you can not use autowire with static field unless you use postConstruct

答案2

得分: 0

Jpa 需要默认构造函数,因此将其放入你的数据类中。

英文:

Jpa needs defaut constructor so put it into your Data class

huangapple
  • 本文由 发表于 2020年4月7日 16:13:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/61075571.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定