我的Java Spring Boot Maven REST API无法正常运行

时间:2019-10-21 08:16:28

标签: java spring hibernate spring-boot spring-mvc

我从Java J2E开始,我正在遵循this教程来使用Java,Spring Boot和Maven开发REST API。

我不明白以下错误,请有人向我解释一下。 我的代码:https://github.com/AngierRomain/API-REST-Spring-Java-Maven

该错误位于ERROR.txt文件中

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我可以看到您已经在pom中添加了依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

您还创建了一个Repository类。我假设您想使用Postgres Db来获取/存储Blog详细信息。

在运行该Spring应用程序时,出现此错误

org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

这是因为您正在尝试使用data-Jpa(pom依赖关系)和postgres(pom中存在依赖关系),但是您未在application.properties中提供方言和连接详细信息。

将此添加到application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/blog
spring.datasource.username= root
spring.datasource.password= root
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

现在,从实体管理器获取此错误:

java.lang.IllegalArgumentException: Not a managed type: class me.romain.Blog

在您的存储库类中,您的Entity类已指定为Blog.java

public interface BlogRepository extends JpaRepository<Blog, Integer>

如果看到Blog类,则它是普通的POJO类。不是DTO。 DTO负责与数据库进行交互。要使POJO成为实体类,您必须指定它。

您可以使用Entity包的Idjavax.persistence批注来做到这一点

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Blog {

    @Id
    private int id;
}

现在,您已经遵循了所有这些条件,并且所有数据源连接详细信息都正确,我认为它应该对您有用。

注意:您应该尝试将一些示例数据保存在数据库中,然后从那里获取数据,以检查它是否确实有效。


如果您只想使用当前代码, 删除存储库类,从pom中删除spring-boot-starter-data-jpa依赖项。而且您应该能够运行您的应用程序。