我不知道为啥我非常简单的 JPA 项目不起作用
Posted
技术标签:
【中文标题】我不知道为啥我非常简单的 JPA 项目不起作用【英文标题】:I don't know why my very simple JPA project doesn't work我不知道为什么我非常简单的 JPA 项目不起作用 【发布时间】:2022-01-20 19:09:14 【问题描述】:我有 org.postgresql.util.PSQLException: ERROR: 关系“角色”不存在,我不知道为什么。
实体类
package com.example.SpringBootTest1.model;
import lombok.*;
import javax.persistence.*;
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "roles")
public class Role
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Setter
@Getter
private int id;
@Setter
@Getter
@Column(name = "name")
private String name;
main()
public static void main(String[] args)
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("role_pu");
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
Role role1 = new Role();
role1.setName("role111");
entityManager.persist(role1);
entityManager.getTransaction().commit();
entityManagerFactory.close();
entityManager.close();
资源/META-INF/persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="role_pu" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.example.SpringBootTest1.model.Role</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="postgres"/>
<property name="javax.persistence.jdbc.password" value="123"/>
<property name="dialect" value="org.hibernate.dialect.PostgreSQL94Dialect"/>
<property name="show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hdm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
在pom.xml
我有hibernate-core
postgresql
lombok
那么为什么我有这样的错误,为什么会这样呢?我读过this question,但对我没有帮助。
【问题讨论】:
【参考方案1】:在现代 Hibernate 版本中,属性 hdm2ddl.auto
应该是 hibernate.hbm2ddl.auto
或 javax.persistence.schema-generation.database.action
。
https://docs.jboss.org/hibernate/stable/orm/userguide/html_single/Hibernate_User_Guide.html#configurations-hbmddl
【讨论】:
以上是关于我不知道为啥我非常简单的 JPA 项目不起作用的主要内容,如果未能解决你的问题,请参考以下文章
我不知道为啥我的 IOCP 的 numberOfConcurrentThreads 参数不起作用
仅在 Windows 10 中,Java Keyevent 不起作用..在 Windows 7 和 8 中它运行良好..我不知道为啥