JPA/EclipseLink - Récupérer les Noms de Colonnes
Je suis en train de mettre à jour mes connaissances en Java, depuis la dernière fois que j'ai utilisé quand il était en 1.4.X version... je suis en train d'utiliser 1.6.0, en particulier la Java Persistence API (2.0).
J'ai réussi à créer une classe d'entité. Elle travaille, depuis que je suis en mesure de stocker et récupérer des données.
Mais j'ai été dupe autour et quand j'ai décidé de remplir une JList avec les noms de colonne d'un tableau et n'a pas eu de succès...
C'est une classe simple et ressemble à:
@Entity
@Table(name = "T_CURRENCY", schema = "APP")
public class Currency implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Short id;
@Basic(optional = false)
@Column(name = "NAME")
private String name;
...
}
Est-il un moyen de récupérer les noms de colonnes?
J'ai trouvé ce post. Semble être une solution valable, mais j'ai pensé qu'il pourrait avoir quelque chose de plus facile et élégant? Je ne sais pas pourquoi, mais je m'attendais à un déjà fait de la méthode...
TIA,
Bob
OriginalL'auteur Bob Rivers | 2010-09-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez analyser la colonne annotations:
Noter que le
Column
annotation est facultative, vous devez vous assurer que vous avez défini. Si non, vous devrez consulter le nom de mécanisme de traduction, ce qui serait trop pour cela.Je sais que c'est. Mais dans son cas, il ne l'est pas. Je vais ajouter une note à ce sujet.
La méthode
Class#isAnnotationPresent
est une meilleure façon de vérifier si une annotation est présente.Cela est-il hérité des champs? J'ai
NoSuchElementException
, tout en obtenant un champ de la classe superOriginalL'auteur Bozho
Dans EclipseLink vous pouvez obtenir le ClassDescriptor pour une classe et d'obtenir ses champs (DatabaseField).
c'est à dire
Vous pouvez également obtenir les mappages de, de table ou de toute autre chose que vous désirez.
Voir,
http://www.eclipse.org/eclipselink/api/2.1/org/eclipse/persistence/descriptors/ClassDescriptor.html
Vecteur n'est pas obsolète... mais l'utilisation de la Liste de son interface, (Liste)getFields()
OriginalL'auteur James
Propriété et le mappage des Colonnes de EclipseLink
ClassDescriptor
getFields()
retour de tous les sous-jacents des noms de colonne, qui est utilisé dans la classe.getMappings()
de retour du champ de la classe nom de la base de données de la colonne nom de champ.OriginalL'auteur Nikson Kanti Paul
Bien, tandis que vous pouvez analyser les annotations (comme l'a souligné Bozho), le point de l'ensemble de la JPA est une sorte de résumé de la table et les noms de colonnes de la business objects (qui pourrait même utiliser les valeurs par défaut, rendant l'information même pas présent). En d'autres termes, je ne voudrais pas compter sur eux, mais plutôt d'utiliser le nom de la classe et les noms d'attribut.
Correct, l'API de Métadonnées de ne pas inclure la colonne info.
OriginalL'auteur Pascal Thivent