JPA如何创建用于保存的枚举

时间:2019-04-28 15:50:37

标签: java sql postgresql jpa spring-data-jpa

我正在使用Spring Boot。

我有下表:

CREATE TYPE photo_status as enum('pending', 'completed', 'processing', 'failed');
CREATE TABLE photos (
    uuid uuid DEFAULT gen_random_uuid() PRIMARY KEY,
    url text NOT NULL,
    status photo_status DEFAULT 'pending' NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL
);

尝试保存到数据库时,出现以下错误:

  

错误:列“状态”的类型为photo_status,但表达式的类型为   字符变化

     

org.springframework.dao.InvalidDataAccessResourceUsageException:可以   不执行语句; SQL [n / a];嵌套异常为   org.hibernate.exception.SQLGrammarException:无法执行   声明

我认为我的问题出在实体中的Emum(PhotoStatus)。

问题

我无法修改SQL脚本来更改表。那么如何更改实体以与现有表一起使用?

代码

实体

@Entity
@Table(name = "photos")
public class PhotoEntity {

    public enum PhotoStatus {
        pending,
        complete,
        processing,
        failed
    }

    @Id
    @Column(name = "uuid")
    private UUID uuid;

    @Column(name = "url", nullable = false)
    private String url;

    @Enumerated(EnumType.STRING)
    @Column(columnDefinition = "photo_status", nullable = false)
    private PhotoStatus status;

    @Column(name = "created_at", nullable = false)
    private LocalDateTime created_at;

0 个答案:

没有答案