JPA の計算プロパティと Hibernate の @Formula アノテーションのマッピング
Java Persistence API (JPA) エンティティでは、計算プロパティは他のエンティティから派生した値を表しますエンティティのプロパティまたはデータベースの計算。これらのプロパティはデータベース列にマップされませんが、オンデマンドで取得または更新できます。 Hibernate は、JPA エンティティ内で計算されたプロパティを簡単にマッピングするための @Formula アノテーションを提供します。
@Formula アノテーションを使用するには、それをエンティティ内の計算されたプロパティに適用するだけです。注釈は、計算ロジックを指定する SQL フラグメントを受け入れます。たとえば、データベース COUNT() 関数を使用して計算する必要がある「childCount」プロパティがある場合、次のように定義できます。
@Formula("COUNT(SELECT 1 FROM Child WHERE Child.parentId = id)") private int childCount;
この例では、SQL フラグメント COUNT(SELECT 1) FROM Child WHERE Child.parentId = id) は、現在のエンティティに関連付けられた子エンティティの数を計算します。
@Formula アノテーションは、より複雑なクエリをサポートすることで柔軟性を提供します。たとえば、顧客に関連付けられた注文の最小作成日を計算できます。
@Formula("(SELECT MIN(o.creation_date) FROM Orders o WHERE o.customer_id = id)") private Date firstOrderDate;
@Formula アノテーションは Hibernate 固有の拡張機能であることに注意することが重要です。これにより、計算されたプロパティの効率的なマッピングが可能になりますが、JPA 永続プロバイダーとして Hibernate を使用する場合にのみ使用できます。
このトピックの詳細については、次のリソースを参照してください。
以上がHibernate の @Formula アノテーションは JPA で計算されたプロパティをどのようにマッピングできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。