Arrêt Mise en veille prolongée d'essayer d'obtenir un champ calculé à partir de la base de données

StackOverflow https://stackoverflow.com/questions/3509031

Question

J'ai une propriété d'un objet métier qui est calculé. Le calcul implique certains des connectés Détails de l'utilisateur, et ne peut donc pas être représenté comme une simple requête SQL.

Je ne parviens pas à représenter le champ dans le fichier XML de mapping Hibernate, car Hibernate continue d'essayer de récupérer le champ de la base de données, bien qu'il n'y ait pas de colonne de ce nom.

Était-ce utile?

La solution

  

Je ne parviens pas à représenter le champ dans le fichier XML de mapping Hibernate, car Hibernate continue d'essayer de récupérer le champ de la base de données, bien qu'il n'y ait pas de colonne de ce nom.

Je suis probablement manque quelque chose évidente, mais ... pourquoi êtes-vous mappez ce domaine alors? Mais juste au cas où, cela pourrait être un cas de bonne utilisation pour <formula> attribut.


  

Le champ est dans la classe Java, et quand je code une requête, je peux fournir le SQL personnalisé pour le remplir, par exemple:. SELECT t * (SELECT x de y) AS champ de la table t WHERE ... Mise en veille prolongée me permet d'utiliser ensuite SQLQuery.addEntity (Z.class) et crée de manière appropriée l'objet. Pour autant que je comprends, si je quitte le champ de la cartographie tout à fait, je ne peux jamais remplir cet attribut dans ma requête. J'ai essayé :)

Je soupçonnait quelque chose comme ça, mais je voulais obtenir une confirmation. Je ne pense pas que vous avez que beaucoup d'options: soit utiliser un <formula> (que ce soit une formule « stupide » juste pour mise en veille prolongée trick) ou retourner une entité non géré .

Autres conseils

On dirait que vous voulez que cette propriété soit « transitoire »

<transient name="foo" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top