2017-09-06 6 views
2

J'ai une table Cassandra Department avec les colonnes name_list extends SetColumn[String] with PartitionKey et id extends StringColumn with PartitionKey.Comment sélectionner des champs de SetColumn [String] dans Phantom

Je veux chercher id où la demande nom est présent dans liste_noms.

J'ai essayé en utilisant ce code ci-dessous mais pas obtenir de résultats

abstract class Departments extends Table[Departments, Department] with RootConnector { 

    object id extends StringColumn with PartitionKey 

    object dep_type extends StringColumn 

    object name_list extends SetColumn[String] with Index 

     def getByName(name: String) = { 
     select(_.id, _.name_list) 
      .where(_.name_list.contains(name)) 
      .allowFiltering() 
      .one() 
     } 
} 

Est-il possible de résoudre ce !!

+0

@flavian Pouvez-vous vérifier. –

Répondre

2

Je pense que nous n'avons pas besoin d'étendre Index pour cela. Il fonctionne très bien avec cela aussi: -

object name_list extends SetColumn[String] 

Maintenant, je reçois id et liste_noms en utilisant la même méthode que ci-dessus: -

def getByName(name: String) = { 
    select(_.id, _.name_list) 
     .where(_.name_list.contains(name)) 
     .allowFiltering() 
     .one() 
    } 
0

Votre schéma doit être:

object name_list extends SetColumn[String] with Index

Sans indexation secondaire Cassandra ne prend pas en charge les opérations de collecte.

+0

Merci d'avoir aidé @flavian mais je n'ai toujours pas de réponse. –

+0

J'ai mis à jour la question S'il vous plaît jeter un oeil Merci –

+0

Est-ce que la requête compiler et de travailler, mais vous ne recevez pas de résultats de Cassandra? – flavian