byte 类型的错误值 -postgres、spring、JPA

ban*_*nnn 2 java postgresql spring jpa

我想用这个模式在 Postgres 中存储一个实体

CREATE TABLE IF NOT EXISTS Ingredient
(
    id   VARCHAR(4)  NOT NULL PRIMARY KEY,
    name VARCHAR(25) NOT NULL,
    type VARCHAR(10) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

这是Java模型

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PUBLIC, force = true)
public class Ingredient {
    @Id
    private final String id;
    private final String name;

    private final Type type;

    public enum Type {
        WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
    }
}
Run Code Online (Sandbox Code Playgroud)

这是代码

@Profile("!prod")
@Configuration
public class DevelopmentConfig {
    @Bean
    public CommandLineRunner dataLoader(
            IngredientRepository ingredientRepo,
    ) {
        return args -> {
            Ingredient flourTortilla = new Ingredient(
                    "FLTO", "Flour Tortilla", Type.WRAP);
            ingredientRepo.save(flourTortilla);
            
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误 -原因为:org.hibernate.exception.DataException:无法从 JDBC ResultSet 中提取列 [3] [字节类型值错误:WRAP]

**由以下原因引起:org.postgresql.util.PSQLException:字节类型的错误值:WRAP **

任何建议表示赞赏。

我尝试研究这个错误,但没有找到答案,我尝试定义列数据类型,但它仍然不起作用

GJo*_*nes 5

最可能的问题是,Spring 默认情况下使用枚举的序数值(数字)而不是字符串值来存储枚举。您可以尝试以下操作:

private final String name;

@Enumerated(EnumType.STRING)
private final Type type;
Run Code Online (Sandbox Code Playgroud)