10
votes

Peut hiberner utiliser un nom logique pour la propriété d'entité différente du nom de champ?

Disons-nous, il y a une entité hibernée configurée avec un accès sur le terrain au moyen d'annotations. Je voudrais mapper un champ de classe Java _name de sorte que son nom logique pour hibernate soit nom , par exemple, lorsqu'il est renvoyé des requêtes HQL. J'en ai besoin pour la plupart des collections.

Anticiper des suggestions incorrectes: la commutation de type d'accès à "propriété" n'est pas possible; La tâche n'a rien à voir avec le nom de la colonne physique.


2 commentaires

Si cela aide, mon grand objectif est de marier hibernate avec Scala afin que les collections Java soient utilisées pour la cartographie au niveau bas, tandis que les emballages de collecte Scala appropriés soient exposés à l'extérieur. Malheureusement, bien que JVM permet aux champs et aux méthodes d'auto-intitulé, SCALA ne peut pas supporter cela, de sorte qu'il semble qu'il ne semble pas possible de créer un champ de style Java avec nom et accessoir scala appelé nom ()


Vous pouvez essayer un caractère de propriété personnalisé hibernate, mais cela semble être brisé: hibernate.atlassian.net/browse / Hcann-48 :(


4 Réponses :


1
votes

Voulez-vous dire comme ça? XXX


1 commentaires

Non, ce n'est pas sur le nom de la colonne. Je souhaite qu'un HQL comme celui-ci soit possible: Sélectionnez Nom à partir de la sénicité



0
votes

Vous pouvez créer la deuxième propriété avec un nom de nom différent sur la même colonne et l'utiliser dans les requêtes HQL. Mais il y a une restriction: seule une de ces propriétés peut être mappée comme insérable, mise à jour.

@Column(name="name")
private string name;

@Column(name="name", insertable=false, updatable=false)
private string alsoName;


1 commentaires

Désolé, j'ai oublié de mentionner que je suis surtout intéressé par une aliasing de collections



0
votes

Vous pouvez utiliser alias dans HQL comme vous l'utilisez dans SQL. Vous n'avez pas besoin de spécifier d'annotation pour cela. Les annotations peuvent être ajoutées pendant les requêtes:

Sélectionnez ID de nom _name


0 commentaires

2
votes

Basé sur ma compréhension de votre question - Vous pouvez définir l'entité comme celle-ci. Cela générera une table hibernate nommée (newname_abc avec un nom de colonne) xxx

peut par balle peut utiliser LIBIBASE pour créer la table.


0 commentaires