Maison > Java > javaDidacticiel > Comment puis-je mapper des tableaux PostgreSQL vers des tableaux Java avec Hibernate ?

Comment puis-je mapper des tableaux PostgreSQL vers des tableaux Java avec Hibernate ?

Barbara Streisand
Libérer: 2024-10-25 02:49:30
original
787 Les gens l'ont consulté

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

Mappage de tableaux PostgreSQL avec Hibernate

Problème rencontré

Lors de la tentative de mappage d'une colonne de tableau numérique dans PostgreSQL à un champ de tableau numérique en Java à l'aide d'Hibernate , une exception peut se produire.

Solution

Pour résoudre ce problème, suivez ces étapes :

1. Ajouter une dépendance Maven

Dans le fichier pom.xml de votre projet, ajoutez la dépendance Maven Hibernate Types suivante :

<code class="xml"><dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>${hibernate-types.version}</version>
</dependency></code>
Copier après la connexion

2. Configurer les types Hibernate

Dans votre configuration Hibernate, activez les types Hibernate en ajoutant les TypeDefs suivants :

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

3. Définir les types Hibernate (Facultatif)

Si les classes StringArrayType et IntArrayType ne sont pas définies, vous pouvez les inclure dans une superclasse :

<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>
Copier après la connexion

4. Mappez votre entité

Exemple de mappage :

<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>
Copier après la connexion

Exemple de requête

<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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal