Mon bean Java a une propriété childCount. Cette propriété n'est pas mappée à une colonne de base de données . Au lieu de cela, il devrait être calculé par la base de données avec une COUNT()
fonction opérant sur la jointure de mon bean Java et de ses enfants. Ce serait encore mieux si cette propriété pouvait être calculée à la demande / "paresseusement", mais ce n'est pas obligatoire.
Dans le pire des cas, je peux définir la propriété de ce bean avec HQL ou l'API Criteria, mais je préférerais ne pas le faire.
L' @Formula
annotation Hibernate peut aider, mais je pouvais à peine trouver de la documentation.
Toute aide grandement appréciée. Merci.
@Formula
annotation utilise SQL, pas HQL.Comme expliqué dans cet article , vous avez trois options:
@Transient
méthode@PostLoad
écouteur d'entité@Formula
annotation spécifique HibernateAlors qu'Hibernate vous permet d'utiliser @Formula , avec JPA, vous pouvez utiliser le rappel @PostLoad pour remplir une propriété transitoire avec le résultat d'un calcul:
Pour les requêtes plus complexes, vous pouvez utiliser Hibernate
@Formula
, comme expliqué dans cet article :la source
Jetez un œil aux vues des entités Blaze-Persistence qui fonctionne au-dessus de JPA et fournit un support DTO de première classe. Vous pouvez projeter n'importe quoi sur des attributs dans Entity Views et il réutilisera même les nœuds de jointure existants pour les associations si possible.
Voici un exemple de cartographie
Récupérer ceci générera une requête JPQL / HQL similaire à celle-ci
Voici un article de blog sur les fournisseurs de sous-requêtes personnalisées qui pourraient également vous intéresser: https://blazebit.com/blog/2017/entity-view-mapping-subqueries.html
la source
j'ai essayé ceci sur mon code
les erreurs que je reçois lorsque je cours et affiche ma vue avant même d'essayer d'afficher la colonne sur la moustache est quelque chose comme ça
la question que j'ai posée était : y a-t-il un moyen d'obtenir les valeurs de la colonne calculée en utilisant JPA / Hibernate avec mySQL?
Qu'est-ce que je fais mal ?
la source