tutti. Ho problemi a sostituire le righe esistenti nella tabella con quelle nuove. Io uso JPA e DB PostgreSQL. Sto tentando di eliminare tutte le righe esistenti e quindi di crearne di nuove, ma di ricevere un'eccezione: org.postgresql.util.PSQLException: ERRORE: il valore della chiave duplicata viola il vincolo univoco "user_destination_pk". Tutte queste azioni sono all'interno di una singola transazione JTA. Sembra che JPA non cancelli le righe prima di inserirle, ma non ricevo alcuna eccezione di cancellazione ... Qualsiasi aiuto è apprezzato.Sostituire le righe esistenti con quelle nuove causa l'eccezione chiave duplicata
risposta
Utilizzare il metodo Hibernate Session.flush()
per eliminare (eseguire l'SQL di) le eliminazioni prima di salvare/aggiungere le nuove entità.
È possibile creare il vincolo unico come deferrable initially deferred
All'inizio ci ho pensato anch'io, ma non credo che sarebbe d'aiuto qui. Dalla descrizione sembra che in realtà è JPA che non invia le eliminazioni prima di inviare gli inserti. L'unica situazione in cui ciò sarebbe utile è quando JPA invierà le eliminazioni ** dopo ** l'invio degli inserti. –
@a_horse_with_no_name Tuttavia non ha importanza all'interno della stessa transazione JTA. –
- 1. Come sostituire le nuove righe con i caratteri di tabulazione?
- 2. ignorare inserto di righe che violano indice chiave duplicata
- 3. Nuove righe con ConfigParser?
- 4. Inserimento di nuove righe e spostamento di quelli esistenti con OpenXML SDK 2.0
- 5. Eccezione di inserimento chiave duplicata duplicata
- 6. sull'aggiornamento della chiave duplicata
- 7. Perché awk non stampa le nuove righe?
- 8. errore di chiave duplicata con SonarQube 5.2
- 9. Come salvare le nuove righe nell'attributo XML?
- 10. Le nuove righe vengono elencate nell'array
- 11. Sostituire una singola riga con più righe di testo
- 12. come recuperare la chiave duplicata mangusta + esprimono
- 13. subordinato all'aggiornamento della chiave duplicata
- 14. MongoDB: inserire aggiornata chiave duplicata
- 15. MySQL sull'aggiornamento della chiave duplicata
- 16. Perché le nuove righe tra parentesi cambiano i risultati aritmetici?
- 17. Abilita chiave esterna con Verifica dati esistenti
- 18. Ricerca di spazi, nuove righe e schede con charAt()
- 19. manyToMany causa l'errore di immissione duplicata
- 20. Interagire con JTable che viene rapidamente aggiornato con nuove righe
- 21. preprocessore per sostituire le parole chiave javascript
- 22. Nuove righe in Jasper Reports?
- 23. Come si usa string.tr per sostituire le virgolette doppie con quelle singole in Ruby?
- 24. Parametri GET URL PHP, se esistenti, sostituire?
- 25. Inserimento MySQL su chiave duplicata; Elimina?
- 26. Winsock - interrompe l'accettazione di nuove connessioni, ma continua a comunicare con le connessioni esistenti
- 27. Conserva nuove righe in YAML
- 28. Eccezione chiave duplicata da Entity Framework?
- 29. Perché le stringhe non-letterali non possono contenere righe nuove?
- 30. Regex per adattarsi a qualsiasi carattere incluse le nuove righe
Grazie, ho pensato a flush(), ma credo che finisce transazioni DB. Ho ragione? Non voglio eliminare, non essendo sicuro che le nuove righe siano buone. – damluar
chiamata flush() non completa la transazione (sebbene il commit della transazione sia implicitamente flush()), rende Hibernate solo esegui SQL per portare il db nello stesso stato della sessione. – araqnid
grazie, ora è chiaro – damluar