將PostgreSQL.中實體可能會帶來挑戰。 PostgreSQL 中的 JSON 類型需要特定的映射策略才能與實體屬性無縫互動。本文探討了可用於建立此映射的方法,提供了自訂使用者類型實作的程式碼片段和實際範例。
識別資料類型
何時嘗試將 PostgreSQL JSON 欄位對應到 JPA2 實體字段,使用 String 作為資料類型可能會導致轉換問題。正確的值類型取決於特定要求和使用的映射策略。
自訂使用者類型
要將 JSON 欄位對應到實體屬性,您可以定義自訂休眠使用者類型。這允許將字串值直接映射到資料庫的 JSON 類型。以下是範例實作:
定義UserType<code class="java">import org.hibernate.HibernateException; import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.usertype.UserType; import java.io.Serializable; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class StringJsonUserType implements UserType { // Implementation details here... }</code>
自訂使用者類型在實體類別中註解:
屬性註解<code class="java">@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)})</code>
實體屬性註解為使用自訂使用者類型:
設定資料庫<code class="java">@Type(type = "StringJsonObject") public String getBar() { return bar; }</code>
Hibernate將依照實體來對應處理在資料庫中建立JSON 類型的列。
範例專案
GitHub 專案可供進一步探討:
以上是如何將 PostgreSQL JSON 欄位對應到 Hibernate 實體屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!