ホームページ  >  記事  >  Java  >  Hibernate を使用して PostgreSQL 配列を Java 配列にマップするにはどうすればよいですか?

Hibernate を使用して PostgreSQL 配列を Java 配列にマップするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 02:49:30688ブラウズ

How can I Map PostgreSQL Arrays to Java Arrays with Hibernate?

Hibernate を使用した PostgreSQL 配列のマッピング

問題が発生しました

Hibernate を使用して PostgreSQL の数値配列列を Java の数値配列フィールドにマップしようとすると、例外が発生する可能性があります。

解決策

この問題を解決するには、次の手順に従います。

1. Maven 依存関係の追加

プロジェクトの pom.xml ファイルに、次の Hibernate Types Maven 依存関係を追加します。

<code class="xml"><dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>${hibernate-types.version}</version>
</dependency></code>

2. Hibernate タイプの構成

Hibernate 構成で、次の TypeDefs を追加して Hibernate タイプを有効にします:

<code class="java">@TypeDefs({
    @TypeDef(
        name = "string-array",
        typeClass = StringArrayType.class
    ),
    @TypeDef(
        name = "int-array",
        typeClass = IntArrayType.class
    )
})</code>

3. Hibernate 型の定義 (オプション)

StringArrayType クラスと IntArrayType クラスが定義されていない場合は、それらをスーパークラスに含めることができます:

<code class="java">@MappedSuperclass
public class BaseEntity {

    @Id
    private Long id;

    @Type(type = "string-array")
    private String[] stringArray;

    @Type(type = "int-array")
    private int[] intArray;

    // Getters and setters omitted for brevity
}</code>

4.エンティティのマッピング

マッピングの例:

<code class="java">@Entity(name = "Event")
@Table(name = "event")
public class Event extends BaseEntity {

    @Type(type = "string-array")
    private String[] sensorNames;

    @Type(type = "int-array")
    private int[] sensorValues;

    // Getters and setters omitted for brevity
}</code>

クエリの例

<code class="java">Event event = entityManager.find(Event.class, 1L);

// Accessing the mapped array properties
for (String sensorName : event.getSensorNames()) {
    System.out.println(sensorName);
}

for (int sensorValue : event.getSensorValues()) {
    System.out.println(sensorValue);
}</code>

以上がHibernate を使用して PostgreSQL 配列を Java 配列にマップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。