在 IntelliJ 中使用 JPA 的 Spring Boot
Posted
技术标签:
【中文标题】在 IntelliJ 中使用 JPA 的 Spring Boot【英文标题】:SpringBoot with JPA in IntelliJ 【发布时间】:2017-08-02 21:29:39 【问题描述】:我刚从 Spring 开始,实际上我是一步一步的教程,所以一切都会很好,但不知何故,我在添加 JPA 元素后运行 spring boot 时遇到了问题。
之前我遇到了数据库类型 NONE 的问题,所以我手动添加了依赖:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.12.1.1</version>
<scope>runtime</scope>
</dependency>
但我觉得 pom 文件中仍然缺少一些东西,如下所示: Pom.XML
带有错误的控制台输出如下所示: Console output
实施: 1. class Topic 2. class TopicController 3. class TopicRepository 4. class: TopicService 5. run class
【问题讨论】:
在问题中发布错误堆栈跟踪以及相关代码。 Hibernate 清楚地抱怨类 Topic 不是托管类型。发布这个类,以及你的 hibernate/jpa 配置。 您的控制台输出显示您的 topicRepository 类无法初始化,因为类 defaultpackage.topic.Topic 似乎是您的 bean。你能分享一下实施的细节吗? 添加完整代码 你需要在 Topic 类上添加实体注解,这样 CrudRepository 才能工作 【参考方案1】:需要注解Topic类:
package defaultpackage.topic;
/**
* Created by zales on 02.03.2017.
*/
@Entity
public class Topic
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
private String name;
private String discription;
public Topic()
public Topic(String id, String name, String discription)
super();
this.id = id;
this.name = name;
this.discription = discription;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getDiscription()
return discription;
public void setDiscription(String discription)
this.discription = discription;
您可以在此处查看带有实体和存储库的类似示例:
https://github.com/ccoloradoc/HibernateFilePermissionSample
还要确保所有实体与 SpringBootApplication 位于同一包(或子包)中。
【讨论】:
一切对我有用,谢谢!我只需要删除@GeneratedValue,因为我没有使用像 1、2、3 这样的临时 ID,而且 Id 是字符串以上是关于在 IntelliJ 中使用 JPA 的 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章
EJB,JPA persistence.xml问题Wildfly 8.2 intellij
JPA 自动完成功能在 Intellij spring-boot kotlin 项目中不起作用
IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA sort排序方法使用方式, 添加关联表的 order by