È facile usare @AdditionalCriteria in EclipseLink, ad esempio per filtrare le entità eliminate, ma è possibile disattivarlo temporaneamente prima di eseguire una query specifica?C'è un modo per disattivare @AdditionalCriteria in EclipseLink?
risposta
Sì, è possibile, con una soluzione facile. Ho specificato l'annotazione @AdditionalCriteria in questo modo:
@AdditionalCriteria(":disableDeletedFeature = 1 or this.isDeleted = false")
e specificato un valore di proprietà di default per la bandiera disabilitazione nel persistence.xml:
<property name="disableDeletedFeature" value="0"/>
in modo da filtro predefinito è abilitato ma è possibile disattivarla facilmente al livello EntityManager come questo:
entityManager.setProperty("disableDeletedFeature", 1);
Funziona tutto bene per me, spero che aiuti!
Se si utilizza una query SQL nativa, i criteri non verranno aggiunti.
Altrimenti non esiste un modo semplice per disabilitarne l'aggiunta, a meno che non si crei un'altra unità di persistenza o un'altra classe senza i criteri aggiuntivi.
Una cosa che si potrebbe fare è inserire una condizione OR nei criteri basati su una proprietà di sessione, quindi quando si imposta questa proprietà su true, è possibile disabilitare i criteri.
È possibile registrare una richiesta di miglioramento per aggiungere un'opzione per non aggiungerla a una query.
Uso eclipselink 2.4.1. Funziona solo con VIRGOLETTA per un valore della proprietà:
@AdditionalCriteria(":disableDeletedFeature = '1' or this.isDeleted = false")
e qui:
entityManager.setProperty("disableDeletedFeature", '1');
- 1. Un modo per disattivare "Internet off" in windows usando C#?
- 2. Hibernate o EclipseLink per JPA?
- 3. Utilizzando EclipseLink
- 4. C'è un modo per disattivare gli avvisi xml?
- 5. EclipseLink moxy serializzazione JSON
- 6. EclipseLink @MappedSuperclass e generici
- 7. C'è un modo per disattivare i modelli personalizzati con un commento in ReSharper
- 8. Come configurare il Cache query in EclipseLink
- 9. Risultato query nativa EclipseLink in POJO: descrittore mancante per [Classe]
- 10. Disattivare in modo condizionale asset precompilato in Capistrano
- 11. Come disattivare il debugging in disassembly in modo permanente?
- 12. C'è un modo per disattivare la modalità silenziosa in DCC32 chiamata da MSBuild?
- 13. C'è un modo per disattivare la conversione del tipo implicito in SQL Server?
- 14. C'è un modo per attivare e disattivare la connessione wifi programmaticamente in iOS?
- 15. C'è un modo per disattivare la modalità jquery noconflict in Wordpress?
- 16. C'è un modo per disattivare le animazioni in github mentre visualizzi la navigazione nel codice?
- 17. C'è un modo per disattivare la funzionalità "doppio clic per copiare" di un'etichetta .NET?
- 18. TopLink 11g rispetto a EclipseLink
- 19. Come modificare EclipseLink in GlashFish 4.0?
- 20. Problema con Eclipselink e @XmlRef
- 21. In che modo posso disattivare i suggerimenti in EditText?
- 22. Come disattivare in modo permanente Correzione automatica in iOS Simulator?
- 23. C'è un modo per disattivare tutti gli avvisi con un pragma?
- 24. Haskell - un modo per disattivare la sintassi rebindable per il caso di istanze `derivanti`?
- 25. EclipseLink JPA - posizione di persistence.xml
- 26. C'è un modo per eliminare FindBugs dalla generazione di avvisi sul codice generato dalla tessitura statica?
- 27. Impossibile capire l'avviso di EclipseLink
- 28. Come disattivare un elemento in uno Spinner
- 29. Disattivare UIScrollView in decelerazione
- 30. Come disattivare CalendarView in un DatePicker?
Lo vedo come una soluzione piuttosto che una soluzione consigliata, ma dato che avevo messo in atto molto simile (usando @AdditionalCriteria ("this.deleted =: SOFTDELETED")), accetto questa risposta. @ James, sì, alcuni parlano dell'implementazione del supporto a livello nativo per questo sul wiki di sviluppo di Eclipselink (http://wiki.eclipse.org/Talk:EclipseLink/Development/AdditionalCriteria). – Kalle
Grazie Kristof e Kalle. Entrambe le soluzioni funzionano per me su PostgreSQL, ma: disableDeletedFeature = 1 non funziona per i nostri test unitari con H2. Così ho usato @AdditionalCriteria ("this.blocked =: disableDeletedFeature O this.blocked = false") –