如何使用 JPA 在 Hibernate 6.5 中映射 2d(多维)数组?

问题描述 投票:0回答:1

我正在使用最新的 hibernate 版本(6.5),并且此版本中的 hypersistence utils 不支持自定义数组类型,因为 hibernate > 6.4 本身支持它。

我已经测试过,这本身适用于 float[] 数组,所以例如这有效

@Entity
public class MyEntity {
    float[] myArray
}

但是如果我对二维数组做同样的事情:

float[][] myArray

我收到此错误:

原因:java.lang.ClassCastException: 类 org.hibernate.type.internal.BasicTypeImpl 无法转换为类 org.hibernate.type.BasicPluralType (org.hibernate.type.internal.BasicTypeImpl 和 org.hibernate.type.BasicPluralType 位于加载程序“app”的未命名模块中)

因此,将列映射为 json 并使用 columnDefinition = "jsonb" 似乎是唯一的解决方案。是否有另一种方法来映射 hibernate 6.5 原生支持的多维数组?

spring postgresql spring-boot hibernate jpa
1个回答
0
投票

考虑使用内置的自定义类型定义

FloatPrimitiveArrayJavaType

@Type(value = FloatPrimitiveArrayJavaType.class, parameters = @Parameter(name = "sql_array_type", value = "float_array"))
@Column(name = "2d_float_array", columnDefinition = "float_array[][]")
private float[][] myArray;
© www.soinside.com 2019 - 2024. All rights reserved.