2011-03-25 2 views
0

Dans mon application Hibernate + Spring, j'ai plusieurs objets de domaine basés sur des annotations. J'aimerais les parcourir tous et créer des métabalises avec des définitions pour chacun d'entre eux. Ce métatable devrait ressembler à ceci:Création de métadonnées pour les objets de domaine Hibernate

Entity Name | Field Name | Field Type | Field Size| etc. 

Par exemple,

@Entity 
public class User { 

@Column(name = "username", length = 255) 
private String username; 

@Column(name = "password", length = 255) 
private String password; 
} 

devrait créer deux enregistrements

Entity Name | Field Name | Field Type | Field Size| 
User  | username |  String |  255  | 
User  | password |  String |  255  | 

Comment peut-on ce fait?

P.S. Nous utilisons LocalContainerEntityManagerFactoryBean de Spring pour l'accès aux données

Répondre

1

Vous pouvez utiliser la méthode getAllClassMetadata de SessionFactory, qui vous donnera tout ce dont vous avez besoin, sauf peut-être la taille du champ (que je n'ai pas trouvée dans le javadoc). Mais même cela devrait être relativement facile à faire en inspectant l'ensemble d'annotations @Column sur le champ de classe correspondant à chaque propriété persistante de la classe. A partir de ENtityManager, vous pouvez appeler getDelegate pour accéder à la session Hibernate, puis appeler getSessionFactory() pour accéder à la fabrique de sessions.

+0

Merci! J'ai été capable d'obtenir toutes les propriétés du terrain. Pour obtenir la taille du champ, le commentaire suivant a été utile: http://stackoverflow.com/questions/1816780/how-to-reuse-fieldlength-in-form-validation-and-ddl/1946901#1946901 – AKFA

Questions connexes