【问题标题】:Map a java class to Postgresql table error将 java 类映射到 Postgresql 表错误
【发布时间】:2019-12-22 12:17:28
【问题描述】:

我尝试使用 JPA 在 java 中创建一个 Student 实体,但有些东西不起作用。

我在 postgresql 中有一个名为“Studenti”的表和学生类

我的学生班级是:


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;

@Entity(name = "Student")
@Table(name = "Studenti")
public class Student implements Serializable {
    @Id
    @Column(name = "Id")
    private long Id;

    @Column(name = "Nume")
    private String firstName;

    @Column(name = "Prenume")
    private String lastName;

    @Column(name = "An")
    private int year;

    @Column(name = "Id_cont")
    private long accountId;
}

并且该表具有以下结构:

Application.properties:

server.port=9091

spring.application.name=user-management

spring.datasource.url=jdbc:postgresql://localhost:5432/Licenta
spring.datasource.username=postgres
spring.datasource.password=*****

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true

需要创建一个特殊的文件来设置这个或其他东西吗?

【问题讨论】:

  • uuid 不是long。我会怀疑这是问题所在。您能否包括您遇到的堆栈跟踪?
  • 请为 id 列指定@GeneratedValue。

标签: java spring postgresql hibernate spring-boot


【解决方案1】:

不行,只能在 application.properties 文件中配置 PostgreSQL 连接

也许更多的配置参数,尤其是这个

spring.datasource.driver.class=org.postgresql.Driver

如果你已经有DB结构,最好设置ddl-auto=none

而且 PostgreSQL 有 Oracle 引擎(或类似 Oracle 引擎),所以 @Id 字段最好使用序列

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "genname")
@SequenceGenerator(name = "genname", sequenceName = "seqname", allocationSize = 1)

并且@Id字段不能是原语,只能是Long、Integer、String、UUID或其他可能的实现。

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 1970-01-01
    • 2012-05-31
    • 2014-06-24
    • 2021-10-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多