基本上一切都在标题里。
我的DB中有一个列,它是一个varchar[]。
我真的很想把它映射到一个Java/Kotlin enum。我们已经将它作为String的列表(通过com.vladmihalcea:hibernate-types和StringArrayType)来获取,但不是通过映射到枚举。你知道这是否可能吗?
既然我们知道如何将varchar映射到enum,以及如何将varchar[]映射到String集合,我可能会认为这是可能的,但我还没有成功。
下面是我当前配置的一个简单示例:
CREATE TABLE test(my_values varchar[]) ;
INSERT INTO test(my_values) values ('{VAL1, VAL2}')@Entity
@Table(name = "test")
data class DbTest(
@Column(name = "my_values")
val myValues: List<Values>
)
enum class Values {
VAL1, VAL2
}我试过这样做:https://vladmihalcea.com/map-postgresql-enum-array-jpa-entity-property-hibernate/看起来很不错,但是您必须在DB中定义枚举,我们不想这样做。
谢谢!
发布于 2020-09-11 07:22:46
我在发帖我的解决方案,我没有成功地得到一个List<Values>,虽然我有一个Array<Values>,这对我来说很好。
@Entity
@Table(name = "test")
@TypeDef(
name = "values-array",
typeClass = EnumArrayType::class,
defaultForType = Array<Values>::class,
parameters = [
Parameter(
name = EnumArrayType.SQL_ARRAY_TYPE,
value = "varchar"
)
]
)
data class DbTest(
@Type(type = "values-array")
@Column(name = "my_values", columnDefinition = "varchar[]")
val myValues: Array<Values>
)
enum class Values {
VAL1, VAL2
}这就像一个魅力,我可以把我的数组映射到一个列表,反之亦然,这很好。
希望有一天这能帮助到某人;)
发布于 2022-04-02 23:45:46
以前的答案对我不适用,但这个答案很管用:
TypeDef(
name = "enums-array",
typeClass = ListArrayType::class,
parameters = [Parameter(name = EnumArrayType.SQL_ARRAY_TYPE, value = "varchar")]
)https://stackoverflow.com/questions/63743920
复制相似问题