2011-09-30 5 views
3

Donc, je suis encore assez nouveau à Hibernate, et je travaille sur une application de grande taille qui a déjà une base de données avec plusieurs tables Hibernate. Je travaille sur une nouvelle fonctionnalité, qui inclut une nouvelle classe @Entity, et j'ai besoin que ces objets soient stockés dans une nouvelle table. La classe est déclarée comme ceci:Créer une nouvelle table Hibernate

@Entity 
@Table(name="DATA_REQUEST") 
public class DataRequest { 

//Some fields, nothing fancy 

} 

Le tableau DATA_REQUEST n'existe pas, et je n'ai pas de données à stocker dans encore. J'ai démarré l'application, en espérant que cela créerait la table ou planterait car il n'existe pas encore. Aucun de ceux-ci n'est réellement arrivé. Donc: ai-je besoin de créer la table manuellement (facilement)? Ou dois-je aller ailleurs pour dire à Hibernate que j'ai besoin de cette table? J'ai vu le fichier hibernate.cfg.xml, qui semble être un bon point de départ.

+0

D'après ce que je me souviens, Hibernate va créer les tables en cas de besoin (par exemple. lorsque vous enregistrez votre premier objet), bien que je peux me tromper. – ashes999

Répondre

3

Vous devez spécifier "create" pour la propriété "hibernate.hbm2ddl.auto". Lire plus de détails here. Ceci n'est pas recommandé en production mais uniquement à des fins de test.

1

En ce qui concerne l'ajout d'une nouvelle colonne à la table

  • Tant qu'il est pas non nulle colonne vous n'avez pas besoin de supprimer la table ou redémarrer votre application Mise en veille prolongée

  • Si vous voulez utiliser la colonne, vous devez mapper la colonne dans le fichier code/hbm, vous devrez donc redémarrer l'application hibernate

  • S'il n'y a pas de mappage en ce qui concerne hibernate, la colonne pas exisist, S'il est une colonne non nulle alors la base de données sous-jacentes rejetterait insertions/modifications que veille prolongée ne sera pas inclure la colonne dans sql
+0

"Tant que ce n'est pas une colonne non nulle" - c'est logique. J'ai un peu pensé à ça après avoir posté. Dois-je mapper une colonne avec l'annotation '@ Column'? – andronikus

+0

Donc, je me sens vraiment mal que j'ai fait ces deux questions en une, alors j'ai déplacé la partie que vous avez répondu dans une nouvelle question: http://stackoverflow.com/questions/7650588/adding-columns-to-a-hibernate- table-avec-données. Si vous voulez copier votre réponse là-bas, je l'accepterai. Merci encore. – andronikus

1

produite à partir de la documentation de mise en veille prolongée

hibernate.hbm2ddl.auto

Valide ou exporte automatiquement le schéma DDL dans la base de données lors de la création de SessionFactory. Avec create-drop, le schéma de la base de données sera supprimé lors de la fermeture explicite de SessionFactory. par exemple. valider | mettre à jour | créer | create-drop

hibernate Configuration

Questions connexes