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