ホームページ >Java >&#&チュートリアル >Hibernate を使用して PostgreSQL 配列を Java 配列にマップする方法: 数値配列マッピングのガイド
Hibernate を介して PostgreSQL 配列を Java 配列にマッピングするのは難しい場合があります。この記事では、特に数値配列をマップしようとするときに直面する一般的な問題について説明します。
次の Hibernate Types 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 中国語 Web サイトの他の関連記事を参照してください。