Maison  >  Article  >  Java  >  Comment mapper des tableaux PostgreSQL aux tableaux Java avec Hibernate : un guide du mappage de tableaux numériques

Comment mapper des tableaux PostgreSQL aux tableaux Java avec Hibernate : un guide du mappage de tableaux numériques

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 09:16:28225parcourir

How to Map PostgreSQL Arrays to Java Arrays with Hibernate: A Guide to Numeric Array Mapping

Mappage de tableaux PostgreSQL avec Hibernate

Introduction

Le mappage de tableaux PostgreSQL vers des tableaux Java via Hibernate peut être difficile. Cet article aborde les difficultés courantes rencontrées lors de la tentative de mappage spécifique de tableaux numériques.

Configuration des dépendances

La configuration des dépendances Maven Hibernate Types suivantes est cruciale :

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

Personnalisée Définitions de types

Des définitions de types personnalisés, telles que les suivantes, sont requises pour mapper les tableaux PostgreSQL :

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

Les classes StringArrayType et IntArrayType sont fournies par le projet Hibernate Types.

Exemple de mappage

En suivant l'exemple de schéma SQL :

<code class="sql">CREATE TABLE sal_emp (name text, pay_by_quarter integer[]);</code>

Une classe Java correspondante ressemblerait à ceci :

<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>

Insertion d'entités

Lors de l'insertion d'entités telles que :

<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 générera des instructions SQL appropriées pour l'insertion de tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn