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
581 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!

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