首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >varchar的Postgres数组与enum的Java/Kotlin集合之间的Hibernate映射

varchar的Postgres数组与enum的Java/Kotlin集合之间的Hibernate映射
EN

Stack Overflow用户
提问于 2020-09-04 15:20:13
回答 2查看 1.1K关注 0票数 0

基本上一切都在标题里。

我的DB中有一个列,它是一个varchar[]

我真的很想把它映射到一个Java/Kotlin enum。我们已经将它作为String的列表(通过com.vladmihalcea:hibernate-typesStringArrayType)来获取,但不是通过映射到枚举。你知道这是否可能吗?

既然我们知道如何将varchar映射到enum,以及如何将varchar[]映射到String集合,我可能会认为这是可能的,但我还没有成功。

下面是我当前配置的一个简单示例:

代码语言:javascript
复制
CREATE TABLE test(my_values varchar[]) ;
INSERT INTO test(my_values) values ('{VAL1, VAL2}')
代码语言:javascript
复制
@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中定义枚举,我们不想这样做。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-11 07:22:46

我在发帖我的解决方案,我没有成功地得到一个List<Values>,虽然我有一个Array<Values>,这对我来说很好。

代码语言:javascript
复制
@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
}

这就像一个魅力,我可以把我的数组映射到一个列表,反之亦然,这很好。

希望有一天这能帮助到某人;)

票数 1
EN

Stack Overflow用户

发布于 2022-04-02 23:45:46

以前的答案对我不适用,但这个答案很管用:

代码语言:javascript
复制
    TypeDef(
      name = "enums-array",
      typeClass = ListArrayType::class,
      parameters = [Parameter(name = EnumArrayType.SQL_ARRAY_TYPE, value = "varchar")]
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63743920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档