Maison > Java > javaDidacticiel > Comment puis-je mapper les propriétés calculées dans JPA et Hibernate sans utiliser HQL ou l'API Criteria ?

Comment puis-je mapper les propriétés calculées dans JPA et Hibernate sans utiliser HQL ou l'API Criteria ?

DDD
Libérer: 2024-12-03 01:44:10
original
487 Les gens l'ont consulté

How Can I Map Calculated Properties in JPA and Hibernate Without Using HQL or Criteria API?

Mappage des propriétés calculées avec JPA et Hibernate

Arrière-plan :

Supposons que vous ayez un Java bean avec une propriété qui n'est pas directement mappée à une colonne de base de données. Au lieu de cela, vous souhaitez qu'il soit calculé par la base de données à l'aide d'une opération telle que COUNT(). Vous cherchez un moyen de mapper cette propriété sans recourir à HQL ou à l'API Criteria.

Solution utilisant la @Formula d'Hibernate :

JPA ne prend pas directement en charge les propriétés dérivées. Cependant, Hibernate propose l'annotation @Formula comme solution. À l'aide de cette annotation, vous pouvez spécifier une formule pour la propriété, qui peut inclure des fragments SQL ou des requêtes complexes :

@Formula("COUNT(childColumns)")
private int childCount;
Copier après la connexion

Exemples de formules :

  • Calcul un prix avec une majoration :
@Formula("PRICE*1.155")
private float finalPrice;
Copier après la connexion
  • Trouver la date minimum de commande pour un client :
@Formula("(select min(o.creation_date) from Orders o where o.customer_id = id)")
private Date firstOrderDate;
Copier après la connexion

Avantages de @Formula :

  • Vous permet de mapper des propriétés calculées sans requêtes HQL ou API Criteria supplémentaires.
  • Peut améliorer les performances en évitant les allers-retours inutiles dans la base de données.
  • Prend en charge la portabilité à travers différentes plates-formes de bases de données.

Ressources supplémentaires :

  • [Propriétés dérivées d'Hibernate - Performances et portabilité](https://thoughts-on-java .org/hibernate-derived-properties-performance-and-portability/)
  • [Documentation Hibernate Core sur Formula Éléments](https://docs.jboss.org/hibernate/core/4.3/manual/en-US/html/ch05.html#formula-support)
  • [Documentation des annotations Hibernate sur Formule](https://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e735)

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal