通过 Hibernate 将 PostgreSQL 数组映射到 Java 数组可能具有挑战性。本文解决了尝试专门映射数字数组时遇到的常见困难。
设置以下 Hibernate 类型 Maven 依赖项至关重要:
<code class="xml"><dependency> <groupId>com.vladmihalcea</groupId> <artifactId>hibernate-types-52</artifactId> <version>${hibernate-types.version}</version> </dependency></code>
映射 PostgreSQL 数组需要自定义类型定义,如下所示:
<code class="java">@TypeDefs({ @TypeDef( name = "string-array", typeClass = StringArrayType.class ), @TypeDef( name = "int-array", typeClass = IntArrayType.class ) })</code>
StringArrayType 和 IntArrayType 类由 Hibernate Types 项目提供。
遵循示例 SQL 架构:
<code class="sql">CREATE TABLE sal_emp (name text, pay_by_quarter integer[]);</code>
相应的 Java 类如下所示:
<code class="java">@Entity(name = "SalEmp") @Table(name = "sal_emp") public class SalEmp implements Serializable { private String name; @Type(type = "int-array") @Column(name = "pay_by_quarter") private Integer[] payByQuarter; // Getters and setters omitted for brevity }</code>
当插入如下实体时:
<code class="java">SalEmp nullEmp = new SalEmp(); nullEmp.setName("Null Emp"); entityManager.persist(nullEmp); SalEmp salEmp = new SalEmp(); salEmp.setName("Regular Emp"); salEmp.setPayByQuarter(new Integer[] {1, 2, 3}); entityManager.persist(salEmp);</code>
Hibernate 将为数组插入生成适当的 SQL 语句。
以上是如何使用 Hibernate 将 PostgreSQL 数组映射到 Java 数组:数值数组映射指南的详细内容。更多信息请关注PHP中文网其他相关文章!