varchar的postgres数组和enum的java/kotlin集合之间的hibernateMap

omhiaaxx  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(257)

基本上一切都在标题里。
我的数据库中有一列是 varchar[] .
我真的很想把它Map到java/kotlin enum . 我们已经准备好把它作为 String s(通过 com.vladmihalcea:hibernate-types 以及 StringArrayType ),但没有Map到枚举。你知道这是否可行吗?
既然我们知道如何绘制Map 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/ 这看起来很好,但你必须在数据库中定义枚举,我们不希望这样。
谢谢!

col17t5w

col17t5w1#

我正在发布我的解决方案,我没有成功获得 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
}

这就像一个魅力,我可以Map我的数组到一个列表,反之亦然相当容易,这是确定的。
希望有一天这能帮助别人;)

相关问题