我在 Postgres 中有一个数组类型的字段:
categories | text[] | | |
如何在实体类中声明字段?我在
Product.kt
下面试过文件,但它抛出错误 [ERROR]:ERROR: relation "product_categories" does not exist
@ElementCollection
@Column(name = "categories")
var categories: List<String>? = emptyList()
我的目的是将字符串数组保存为实体的一个字段,我不想做任何与“一对多”相关的事情。如果您知道任何 Java 版本的解决方案并且它有效,我也会接受答案。谢谢
最佳答案
Adam 的回答适用于用 Java 编写的项目。由于我的项目是用 Kotlin 编写的,我在下面分享我的版本,希望它有所帮助,人们可以立即使用它,而不是花时间进行转换:
有用资源:How to map Java and SQL arrays with JPA and Hibernate
Postgres:
alter table product add column categories text[];
Gradle :implementation("com.vladmihalcea:hibernate-types-52:2.10.0")
产品.ktimport com.vladmihalcea.hibernate.type.array.StringArrayType
import org.hibernate.annotations.*
import javax.persistence.*
import javax.persistence.Entity
@TypeDefs(
TypeDef(name = "string-array", typeClass = StringArrayType::class)
)
@Entity
class Product(
var name: String,
@Type(type = "string-array")
@Column(name = "categories", columnDefinition = "text[]")
var categories: Array<String>? = arrayOf(),
)
Java 和 Kotlin 之间有两个区别:关于java - 如何使用 JPA 和 hibernate 映射 Java/Kotlin 字符串数组和 Postgres SQL 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64475717/