关于 JPA Spring Boot 应用程序的问题

huangapple 未分类评论48阅读模式
英文:

Problems with Jpa Spring Boot application

问题

  1. 我尝试运行时出现了很多错误,我无法理解发生了什么。
  2. 以下是其中一些错误:
  3. 出现了意外错误(类型=内部服务器错误,状态=500)。
  4. 无法提取ResultSetSQL [n/a];嵌套异常是org.hibernate.exception.SQLGrammarException:无法提取ResultSet
  5. org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取ResultSetSQL [n/a];嵌套异常是org.hibernate.exception.SQLGrammarException:无法提取ResultSet
  6. at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279)
  7. at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
  8. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)
  9. at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
  10. at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
  11. at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
  12. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  13. at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:144)
  14. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  15. at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$ExposeRepositoryInvocationInterceptor.invoke(CrudMethodMetadataPostProcessor.java:364)
  16. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  17. at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
  18. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  19. at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
  20. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  21. at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
  22. at com.sun.proxy.$Proxy83.findAll(Unknown Source)
  23. 我是按照一个指南完成的,但这个指南相当旧了,也许我应该更改JPA依赖,或者以不同的方式创建我的数据库?
  24. 这是关于JPA的第二课程的存储库
  25. https://github.com/drucoder/sweater/tree/JPA_Postgres
  26. 这是我的application.properties
  27. spring.datasource.url=jdbc:postgresql://localhost/sweater
  28. spring.datasource.username=postgres
  29. spring.datasource.password=1506
  30. spring.jpa.generate-ddl-auto=update
  31. 我通过pgadmin创建了名为sweater的空数据库。
  32. 此外,我的IDE向我显示单词Postgresql中有拼写错误。
  33. 这是我的pom.xml
  34. (以下是您的pom.xml代码,已省略)
  35. 这是我的Controller
  36. (以下是您的Controller代码,已省略)
英文:

There are a lot of errors when I try to run it, I cant understand
exactly what happened.
here it is some of them:

  1. There was an unexpected error (type=Internal Server Error, status=500).
  2. could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
  3. org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
  4. at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279)
  5. at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
  6. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)
  7. at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
  8. at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
  9. at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
  10. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  11. at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:144)
  12. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  13. at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$ExposeRepositoryInvocationInterceptor.invoke(CrudMethodMetadataPostProcessor.java:364)
  14. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  15. at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
  16. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  17. at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
  18. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  19. at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
  20. at com.sun.proxy.$Proxy83.findAll(Unknown Source)

I did it by one guide, but this guide is quite old, maybe I should change the JPA dependencies, or create my database differently?
here it is the repository of the second lesson about JPA
https://github.com/drucoder/sweater/tree/JPA_Postgres

This is my application.properties:

  1. spring.datasource.username=postgres
  2. spring.datasource.password=1506
  3. spring.jpa.generate-ddl-auto=update

I create my empty database sweater by pgadmin.
Also, my ide shows me that there is Typo in word Postgresql.
This is my pom.xml:

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.1.7.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-mustache</artifactId>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-data-jpa</artifactId>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.postgresql</groupId>
  21. <artifactId>postgresql</artifactId>
  22. <scope>runtime</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-devtools</artifactId>
  27. <optional>true</optional>
  28. </dependency>
  29. </dependencies>
  30. <properties>
  31. <java.version>1.8</java.version>
  32. </properties>
  33. <build>
  34. <plugins>
  35. <plugin>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-maven-plugin</artifactId>
  38. </plugin>
  39. </plugins>
  40. </build>
  41. </project>

And this is my Controller:

  1. @Controller
  2. public class GreetingController {
  3. @Autowired
  4. private MessageRepo messageRepo;
  5. @GetMapping("/greeting")
  6. public String greeting(
  7. @RequestParam(name="name", required=false, defaultValue="World") String name,
  8. Map<String, Object> model
  9. ) {
  10. model.put("name", name);
  11. return "greeting";
  12. }
  13. @GetMapping
  14. public String main(Map<String, Object> model) {
  15. Iterable<Message> messages = messageRepo.findAll();
  16. model.put("messages", messages);
  17. return "main";
  18. }
  19. @PostMapping
  20. public String add(@RequestParam String text, @RequestParam String tag, Map<String, Object> model){
  21. Message message = new Message(text,tag);
  22. messageRepo.save(message);
  23. Iterable<Message> messages = messageRepo.findAll();
  24. model.put("messages", messages);
  25. return "main";
  26. }
  27. @PostMapping("filter")
  28. public String filter(@RequestParam String filter, Map<String, Object> model) {
  29. Iterable<Message> messages;
  30. if (filter != null && !filter.isEmpty()) {
  31. messages = messageRepo.findByTag(filter);
  32. } else {
  33. messages = messageRepo.findAll();
  34. }
  35. model.put("messages", messages);
  36. return "main";
  37. }
  38. }

答案1

得分: 1

将你的application.properties文件从以下内容进行修改:

  1. spring.datasource.username=postgres
  2. spring.datasource.password=1506
  3. spring.jpa.generate-ddl-auto=update

修改为:

  1. spring.datasource.username=postgres
  2. spring.datasource.password=1506
  3. spring.jpa.generate-ddl-auto=update
  4. spring.datasource.url=jdbc:postgresql://localhost/{你的数据库名称}
英文:

Change your application.properties from

  1. spring.datasource.username=postgres
  2. spring.datasource.password=1506
  3. spring.jpa.generate-ddl-auto=update

to

  1. spring.datasource.username=postgres
  2. spring.datasource.password=1506
  3. spring.jpa.generate-ddl-auto=update
  4. spring.datasource.url=jdbc:postgresql://localhost/{your db name}

huangapple
  • 本文由 发表于 2020年6月29日 15:35:02
  • 转载请务必保留本文链接:https://java.coder-hub.com/62633296.html
匿名

发表评论

匿名网友

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

确定