Ho migrato un progetto Play dalla versione 2.3.4 alla 2.4.2. I progetti utilizzano JPA (Hibernate) ed Evolutions. Ho uno script iniziale Evolutions SQL, che riempie il database con alcuni dati di esempio. Questo script ora non funziona più, perché gli script di Evolutions vengono ora eseguiti prima che Hibernate generi le tabelle, il che ovviamente porta a un errore. È un comportamento desiderato? C'è un modo per cambiare l'ordine di esecuzione?Play Evolutions e JPA in Play Framework 2.4
risposta
Le evoluzioni riguardano la creazione e l'aggiornamento del database mediante semplici script SQL. Quindi, se si utilizza un quadro di riferimento che genera tabelle di dati stessi, come Hibernate, allora avete bisogno di spegnere evoluzioni (o spegnere autogenerazione e utilizzare solo evoluzioni) del database
Fill all'avvio
Ho un simile problema su Cassandra, quello che ho fatto - basta creare un codice che legga il file CQL ed eseguirlo, ed esegui questo codice dopo la creazione delle tabelle di dati reali.
come la vedo Hibernate già ha questa caratteristica - è necessario inserire il codice SQL personalizzato nel file /import.sql
nella root del vostro classpath:
Se un file chiamato import.sql esiste nella radice di il percorso della classe ('/import.sql') Hibernate eseguirà le istruzioni SQL lette dal file dopo la creazione dello schema del database.
- 1. Play Framework e DB2
- 2. Mysterious Play 2.4 Injection exception
- 3. Come eseguire il codice all'avvio in Play! framework 2.4
- 4. IntelliJ e Play framework
- 5. Evoluzioni in esecuzione su Play Framework 2.0
- 6. Pianificazione stile Crontab in Play 2.4.x?
- 7. DTO in Play Framework
- 8. Come usare `controllers.Default.redirect` in Play 2.4 e` InjectedRoutesGenerator`
- 9. Informazioni su Play 2.4 Iniezione delle dipendenze
- 10. play-framework [2.0] HTTPS
- 11. play framework @ obbligatorio
- 12. Integrazione di Play framework 2.0 e Spring framework
- 13. play framework 2.2 risolutori
- 14. Play Framework GUID
- 15. play framework: i18n + scala
- 16. play framework + ScalaTest + ScalaCheck
- 17. Carica test in Play! framework
- 18. UUID con Play Framework
- 19. Play Framework 2.1.1 Problemi di distribuzione
- 20. Play 2.4 e IntellJ non risolvono le classi
- 21. Applicazione Web utilizzando Play framework e sencha
- 22. play framework 2.0 routing inverso
- 23. Attiva SSL su Play! Framework
- 24. Play framework: Timeout connessione WebSocket
- 25. Usa Play Framework come componente
- 26. Play Framework - Reindirizzamento con parametri
- 27. Play Framework 2.0: formattatori personalizzati
- 28. Play Framework Percorsi non funzionanti
- 29. Creazione tabella in gioco 2.4 con play-slick 1.0
- 30. play framework logback layout personalizzato
Grazie per la risposta dettagliata, ma non sono d'accordo. Il documento Play afferma: "Quando si utilizza un database relazionale, è necessario un modo per tenere traccia e organizzare le evoluzioni dello schema del database". Questo non dice come accedere a quel database. A mio parere, Evolutions è stata un'aggiunta perfetta a Hibernate perché Hibernate ha solo possibilità di migrazione limitate. E il punto è che ha funzionato per anni in Play, quindi considero questo un bug. – linsenfips
Hai scritto "Hibernate genera le tabelle" significa che Hibernate organizza il tuo database. È necessario utilizzare solo una meccanica di aggiornamento del database - evoluzione o generazione della tabella di ibernazione. Se si desidera utilizzare l'evoluzione, disattivare la generazione della tabella di ibernazione: http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production. –
AVVISO: gli utenti di Hibernate hanno provato a utilizzare SchemaUpdate per aggiornare automaticamente lo schema di un database di produzione. Questo può terminare rapidamente in caso di emergenza e non sarà consentito dal tuo DBA. –