【问题标题】:Error creating table with Spring Boot and Postgres使用 Spring Boot 和 Postgres 创建表时出错
【发布时间】:2018-04-19 21:30:45
【问题描述】:

我正在尝试使用 Spring 和 Postgres 创建一个应用程序。目前我有 3 个实体:User、Role 和 UserRole。

用户

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

import javax.persistence.*;

@Data
@Entity
@Builder
@AllArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name = "user_id", nullable = false)
    private Long id;
    @Column(name = "username", nullable = false, unique = true)
    private String username;
    @Column(name = "password", nullable = false)
    private String password;
    @Column(name = "name", nullable = false)
    private String firstName;
    @Column(name = "lastName", nullable = true)
    private String lastName;
    @Column(name = "gender", nullable = false)
    private char gender;
    @Column(name = "email", nullable = true)
    private String email;


    public User() {}

    public User(String username, String password, String firstName, String lastName, char gender, String email) {
        this.username = username;
        this.password = password;
        this.firstName = firstName;
        this.lastName = lastName;
        this.gender = gender;
        this.email = email;
    }

} 

角色

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

import javax.persistence.*;

@Data
@Entity
@Builder
@AllArgsConstructor
public class Role {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name = "role_id", nullable = false)
    private Long id;
    @Column(name = "name", nullable = false)
    private String name;
    @Column(name = "description", nullable = false)
    private String description;

    public Role () {}

    public Role (String name, String description) {
        this.name = name;
        this.description = description;
    }

} 

用户角色

import lombok.AllArgsConstructor;
import lombok.Data;

import javax.persistence.*;

@Data
@Entity
@AllArgsConstructor
public class UserRole {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name = "user_role_id")
    private Long id;
    @OneToOne
    @JoinColumn(name = "user_id")
    private User user;
    @OneToOne
    @JoinColumn(name = "role_id")
    private Role role;

    public UserRole () {}

    public UserRole (User user, Role role) {
        this.user = user;
        this.role = role;
    }
} 

运行应用程序时,Role 和UserRole 表在数据库中正确创建,但User 表并非如此。感谢您的帮助:)。

【问题讨论】:

  • 启动应用程序时出现错误?

标签: spring postgresql spring-boot


【解决方案1】:

user 是 postgresql 中的保留关键字,因此不允许使用此名称创建表。换个名字试试。

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2021-12-06
    • 2016-10-29
    • 2017-02-03
    • 2018-12-19
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    相关资源
    最近更新 更多