嘗試使用Hibernate 將PostgreSQL 中的數字陣列組欄位時,可能會出現異常。
要解決此問題,請按照以下步驟操作:
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 設定中,透過新增以下TypeDef 來啟用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中文網其他相關文章!