英文:
Problems with Jpa Spring Boot application
问题
我尝试运行时出现了很多错误,我无法理解发生了什么。
以下是其中一些错误:
出现了意外错误(类型=内部服务器错误,状态=500)。
无法提取ResultSet;SQL [n/a];嵌套异常是org.hibernate.exception.SQLGrammarException:无法提取ResultSet
org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取ResultSet;SQL [n/a];嵌套异常是org.hibernate.exception.SQLGrammarException:无法提取ResultSet
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:144)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$ExposeRepositoryInvocationInterceptor.invoke(CrudMethodMetadataPostProcessor.java:364)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy83.findAll(Unknown Source)
我是按照一个指南完成的,但这个指南相当旧了,也许我应该更改JPA依赖,或者以不同的方式创建我的数据库?
这是关于JPA的第二课程的存储库
https://github.com/drucoder/sweater/tree/JPA_Postgres
这是我的application.properties:
spring.datasource.url=jdbc:postgresql://localhost/sweater
spring.datasource.username=postgres
spring.datasource.password=1506
spring.jpa.generate-ddl-auto=update
我通过pgadmin创建了名为sweater的空数据库。
此外,我的IDE向我显示单词Postgresql中有拼写错误。
这是我的pom.xml:
(以下是您的pom.xml代码,已省略)
这是我的Controller:
(以下是您的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:
There was an unexpected error (type=Internal Server Error, status=500).
could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:144)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$ExposeRepositoryInvocationInterceptor.invoke(CrudMethodMetadataPostProcessor.java:364)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
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:
spring.datasource.username=postgres
spring.datasource.password=1506
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:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mustache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
And this is my Controller:
@Controller
public class GreetingController {
@Autowired
private MessageRepo messageRepo;
@GetMapping("/greeting")
public String greeting(
@RequestParam(name="name", required=false, defaultValue="World") String name,
Map<String, Object> model
) {
model.put("name", name);
return "greeting";
}
@GetMapping
public String main(Map<String, Object> model) {
Iterable<Message> messages = messageRepo.findAll();
model.put("messages", messages);
return "main";
}
@PostMapping
public String add(@RequestParam String text, @RequestParam String tag, Map<String, Object> model){
Message message = new Message(text,tag);
messageRepo.save(message);
Iterable<Message> messages = messageRepo.findAll();
model.put("messages", messages);
return "main";
}
@PostMapping("filter")
public String filter(@RequestParam String filter, Map<String, Object> model) {
Iterable<Message> messages;
if (filter != null && !filter.isEmpty()) {
messages = messageRepo.findByTag(filter);
} else {
messages = messageRepo.findAll();
}
model.put("messages", messages);
return "main";
}
}
答案1
得分: 1
将你的application.properties
文件从以下内容进行修改:
spring.datasource.username=postgres
spring.datasource.password=1506
spring.jpa.generate-ddl-auto=update
修改为:
spring.datasource.username=postgres
spring.datasource.password=1506
spring.jpa.generate-ddl-auto=update
spring.datasource.url=jdbc:postgresql://localhost/{你的数据库名称}
英文:
Change your application.properties from
spring.datasource.username=postgres
spring.datasource.password=1506
spring.jpa.generate-ddl-auto=update
to
spring.datasource.username=postgres
spring.datasource.password=1506
spring.jpa.generate-ddl-auto=update
spring.datasource.url=jdbc:postgresql://localhost/{your db name}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论