我想用这个模式在Postgres中存储实体
CREATE TABLE IF NOT EXISTS Ingredient
(
id VARCHAR(4) NOT NULL PRIMARY KEY,
name VARCHAR(25) NOT NULL,
type VARCHAR(10) NOT NULL
);
这就是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
}
}
下面是代码
@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);
};
}
}
我收到此错误-原因:org.hibernate.exception.DataException:无法从JDBC ResultSet [Bad value for type byte:WRAP]
**原因:org.postgresql.util.PSQLException:类型byte的错误值: Package **
任何建议都很感激。
我已经尝试研究这个错误,但没有找到答案,我已经尝试定义列数据类型,但它仍然没有工作
2条答案
按热度按时间hmmo2u0o1#
最有可能的问题是Spring默认情况下使用它们的序数值(数字)而不是它们的String值来存储Enum。您可以尝试以下操作:
swvgeqrz2#
Hibernate正在尝试将枚举转换为字节类型默认情况下,但枚举的值是字符串,而不是字节,因此您需要指定希望将枚举持久化为String,使用
@Enumerated
:阅读更多:https://thorben-janssen.com/hibernate-enum-mappings/