我们有一个用例,Postgres 数据库中存在 numeric(13,3)[]
类型的列 'datewise_tariff'
。此列存储的值是十进制值,例如 {953.893,953.893,953.893}
我们需要将此列类型映射到 Hibernate Java 实体,但我们收到以下错误:
SQL Error: 0, SQLState: 42804
ERROR: column "datewise_tariff" is of type numeric[] but expression is of type bytea
Hint: You will need to rewrite or cast the expression.
Position: 738
我们尝试通过以下方式映射它:
@Column(name = "datewise_tariff")
private float[] datewiseTariff
@Column(name = "datewise_tariff")
private BigDecimal[] datewiseTariff
@Column(name = "datewise_tariff", columnDefinition = "numeric(13,3)[]")
private float[] datewiseTariff;
@Column(name = "datewise_tariff", columnDefinition = "numeric(13,3)[]")
private BigDecimal[] datewiseTariff;
@Column(name = "datewise_tariff", columnDefinition = "numeric(13,3)[]")
private byte[] datewiseTariff;
@Column(name = "datewise_tariff")
private byte[] datewiseTariff;
以上所有方法似乎都不起作用,并且总是抛出相同的错误。
另外,尝试使用 hibernate-types
sdk,但似乎它也不支持相同的功能。
最佳答案
经过一段无休止的尝试和尝试以及深入 Hibernate 文档的海洋之后,终于找到了一种方法。 @ColumnTransformer
来救援。
使用方法如下:
@Type(type = "list-array")
@Column(name = "datewise_tariff")
@ColumnTransformer(write = "?::numeric(13,3)[]", read = "?::float[]")
private List<Double> datewiseTariff;
list-array
使用 hibernate-types
库定义。
@TypeDef(name = "list-array", typeClass = ListArrayType.class)
关于postgresql - 如何将 numeric(13, 3)[] 数据库列映射到 Hibernate 实体字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206147/