Sto lavorando su un'applicazione web. Stiamo utilizzando Hibernate come ORM nel nostro progetto. In realtà, la nostra applicazione crea dinamicamente alcune tabelle in base alla selezione dell'utente. L'utente può selezionare il nome della tabella, il nome della colonna e quindi può importare i dati da un file csv. Quindi la mia domanda è: come mappare questa tabella creata dinamicamente con oggetti Hibernate e Java?Come mappare la tabella creata dinamicamente in Hibernate?
risposta
Si può fare in modo dinamico, ma è un po 'disordinato:
Avrete bisogno di modificare dinamicamente oggetto di configurazione di Hibernate prima SessionFactory è costruito. Se stai usando Spring, puoi farlo ignorando il metodo postProcessAnnotationConfiguration()
di AnnotationSessionFactoryBean
; in caso contrario sarà sufficiente farlo utilizzando l'oggetto Configuration prima di richiamare buildSessionFactory()
su di esso.
Se è necessario eseguire questa operazione senza il riavvio dell'applicazione, si sta cercando di ricostruire SessionFactory (il che significa che gli utenti dovranno attendere fino a quel punto) o utilizzare un'istanza SessionFactory separata specificatamente dedicata alle proprie classi personalizzate (che è quasi impossibile se le tue classi personalizzate devono fare riferimento alle tue classi built-in).
È possibile accedere ai mapping di classe/tabella tramite configuration.getMappings()
. Sarà quindi necessario creare una nuova mappatura tabella tramite Table API e aggiungerla alla configurazione tramite addTable()
. La stessa cosa dovrà essere fatta con PersistentClass che rappresenta una mappatura di classe. Se stai utilizzando la stessa classe per rappresentare più entità (ad esempio, associa più tabelle) assicurati di utilizzare nomi di entità univoci per ciascuna. Dovrai farlo (modificare la configurazione) su ogni riavvio dell'app.
Quante tabelle vengono create dinamicamente? Le tabelle sono simili e basta cambiare il nome del database?
Ecco una discussione di cambiare il nome della tabella: http://www.experts-exchange.com/Programming/Languages/Java/J2EE/Frameworks/Spring/Q_24237099.html
Se state completamente costruendo una nuova tabella, è possibile utilizzare la vista, e la gente diretti ad una vista?
Perché stai utilizzando Hibernate per questo, invece di creare query in modo dinamico solo in JDBC?
La soluzione di database: è possibile creare una vista e puntarla su una tabella o un'altra (assumendo che la struttura sia identica).
CREATE VIEW HIBERNATE_NAME come SELECT * FROM TABLE_A
o CREATE VIEW HIBERNATE_NAME come SELECT * FROM TABLE_B
Si avrebbe bisogno voi l'applicazione per eseguire SQL nativo (DDL), tuttavia questo dovrebbe essere più semplice di Hibernate hack
- 1. Hibernate - come mappare un EnumSet
- 2. Interrogazione dei dati utilizzando Entity Framework dalla tabella creata dinamicamente
- 3. Come mappare una proprietà byte [] con Hibernate?
- 4. Come mappare una proprietà solo per uso HQL (in Hibernate)?
- 5. Mappare un array PostgreSQL con Hibernate
- 6. Come mappare un set di tipi enum in Hibernate?
- 7. Drag & Drop di una scorciatoia creata dinamicamente
- 8. Tabella plugin MantisBT non creata
- 9. Strane eccezioni compilate espressione dinamicamente creata
- 10. Come mappare due entità JPA o Hibernate sulla stessa tabella di database
- 11. Come mappare la tabella di ricerca su enum?
- 12. come aggiornare dinamicamente la vista tabella in IOS?
- 13. Mappare una stringa localizzata in Hibernate: qualsiasi best practice?
- 14. Hibernate Envers - La tabella REVINFO non esiste
- 15. Tentativo di mappare postgres enum in Hibernate/JPA pojo
- 16. Come mappare ordinali interi enumurated personalizzato con Hibernate
- 17. Come mostrare il codice sorgente per la funzione creata dinamicamente ("personalizzata") in IPython?
- 18. Come si fa a mappare dinamicamente i percorsi spring-webmvc?
- 19. Come vedere la data in cui la tabella è stata creata?
- 20. Sequenza: come mappare un attributo personalizzato in una tabella pivot
- 21. vista immagine creata dinamicamente in griglia non funzionante
- 22. Genera tabella per mappare IPAddress come tipo INET in PostgreSQL?
- 23. Sottoquery utilizzando la tabella derivata in Hibernate HQL
- 24. Hibernate: è possibile mappare l'ereditarietà multi-livello su una singola tabella?
- 25. Come mappare la chiave composita dell'entità in JPA?
- 26. Collega il listener DOMContentLoaded alla finestra creata dinamicamente
- 27. Come viene creata una tabella pivot da laravel
- 28. Come aggiungere dinamicamente righe di tabella
- 29. Hibernate: relazione padre/figlio in una tabella singola
- 30. Come mappare la colonna timestamp al tipo JPA?
Sono d'accordo, utilizzando Hibernate per questo problema non è corretto. – sbidwai