概要
PostgreSQL JSON 列から Hibernate へのデータの統合エンティティは課題を引き起こす可能性があります。 PostgreSQL の JSON タイプでは、エンティティ プロパティとのシームレスな対話のために特定のマッピング戦略が必要です。この記事では、このマッピングを確立するために利用できるアプローチを検討し、カスタム ユーザー タイプ実装のコード スニペットと実際の例を示します。
データ タイプの識別
データ型として String を使用して PostgreSQL JSON 列を JPA2 エンティティ フィールドにマップしようとすると、変換の問題が発生する可能性があります。正しい値のタイプは、使用される特定の要件とマッピング戦略によって異なります。
カスタム ユーザー タイプ
JSON 列をエンティティ プロパティにマップするには、カスタム ユーザー タイプを定義できます。休止状態のユーザータイプ。これにより、文字列値をデータベースの JSON 型に直接マッピングできるようになります。実装例を次に示します。
<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>
UserType の定義
カスタム ユーザー タイプはエンティティ クラスで注釈が付けられます。
<code class="java">@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)})</code>
プロパティの注釈
エンティティ プロパティには、カスタム ユーザー タイプを使用するように注釈が付けられています:
<code class="java">@Type(type = "StringJsonObject") public String getBar() { return bar; }</code>
データベースの構成
休止状態エンティティ マッピングに基づいて、データベース内で JSON タイプの列の作成を処理します。
サンプル プロジェクト
GitHub プロジェクトは、さらに詳しく調べるために利用できます:
https://github.com/timfulmer/hibernate-postgres-jsontype
以上がPostgreSQL JSON 列を Hibernate エンティティ プロパティにマップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。