2016-03-15 8 views
5

È necessario creare clausole di query dinamiche in base all'input dell'utente, ad esempio specificando dinamicamente la colonna all'interno di una query. Tutti gli esempi sono della formaCome specificare le colonne a livello di codice all'interno delle clausole di query utilizzando phantom-dsl per cassandra

.dove (_. SQA id myUuid)

però ho bisogno sth lungo le linee di

.dove ('id' eq myUuid)

che non è possibile. C'è un modo per specificare le colonne di query in modo dinamico usando phantom-dsl?

risposta

1

Phantom non consente modelli arbitrari o righe larghe, sfortunatamente non è molto realistico essere in grado di creare un modello di oggetto basato su tale. Se vuoi file di grandi dimensioni, al momento questo fantasma non sarà in grado di fare molto per te, stiamo lavorando sodo per fornire una soluzione competitiva anche lì, ma non è facile, la superpotenza fantasma viene dal modello a oggetti e dal completamento automatico/typesafety/migrazioni automatiche che ne derivano.

Se si sono semplicemente preoccupati per le migrazioni e la possibilità di cambiare le strutture al volo e la sincronizzazione con Cassandra, si stanno rilasciando una capacità di migrazione automatica molto molto avanzata come parte di fantasma-pro, la versione commerciale di fantasma.

+0

Grazie per la risposta, ma sembra che tu abbia frainteso la mia domanda: il modello è stato risolto. Ad esempio, ho un oggetto con campi fissi x, yez. Se l'input dell'utente è per l'aggiornamento di x = 2, allora ho bisogno di generare modificare (_. X = 2), o per x = 3 ey = 5, ho bisogno di generare modificare (_. X = 3) .and (_ .y = 5) dinamicamente. Se il mio oggetto ha molti campi fissi, scrivere un metodo fisso per ciascuna combinazione non è fattibile. Sembra che il driver java datastax abbia un oggetto QueryBuilder con un metodo set (nome stringa, valore oggetto) per farlo, ma sto chiedendo come farlo con phantom-dsl in scala? – sinel

+0

Puoi fare lo stesso con il fantoccio, scriverò qualcosa. – flavian

+0

Grazie - bello sapere che si può fare, ma io sono bloccato qui poiché non riesco a capire come dai documenti o gli esempi nel repository Github. Se hai poco tempo per mettere insieme un esempio, puoi almeno darmi un rapido suggerimento su come posso provare me stesso. – sinel

Problemi correlati