2017-10-15 2 views
0

J'ai une classe de cas comme celui-ci:UnresolvedUserTypeException: ne peut pas résoudre le type d'utilisateur

case class Address(id String, location String) 
case class Person(id String, name String, address Option[Address]) 

Maintenant, je veux stocker ces classes de cas dans le tableau cassandra. Je travaille avec Lagom Persistence. J'ai donc créé Read Side Processor pour faire cette tâche. J'ai écrit ce qui suit selon la méthode setGlobalPrepare:

session.executeWrite(""" 
| CREATE TYPE Address(
| id text, 
| location text)""".stripMargin) 

session.executeCreateTable(""" 
| CREATE TABLE Person(
| id text, 
| name text, 
| address frozen<Address>, 
| PRIMARY KEY((id),name) 
|)""".stripMargin) 

Mais montrant une erreur qui « UnresolvedUserTypeException: ne peut pas résoudre le type d'utilisateur testdatabase.id » (testdatabase est le keyspace) et même pour le nom de UDT d'adresses. Premièrement, je pensais que c'était à cause de toute l'exécution de la commande qui se déroulait à l'avenir, j'ai donc essayé d'utiliser map pour attendre que la table principale soit créée avant l'UDT mais n'a pas fonctionné. Toutes les tables sont en cassandra mais je reçois cette erreur et je ne suis pas en mesure d'insérer quoi que ce soit.

Besoin d'aide ....

+0

Salut Akhil, cela semble être une erreur sur votre CQL. Je vous recommande de régler cela en premier en utilisant un client Cassandra ('cqlsh',' DBeaver Enterprise', 'DevCenter') d'abord. Si vous ne voulez pas installer un serveur Cassandra sur votre machine, vous pouvez démarrer lagom en mode dev en utilisant 'runAll' et vous connecter à l'instance de cassandra gérée par Lagom sur' localhost: 4000'. – ignasi35

Répondre

0

la création de type devrait également être invoquée dans un « executeCreateTable » et vous devez ajouter un espace entre « gelé » et l'UDT-Nom.

session.executeCreateTable(""" 
    CREATE TYPE IF NOT EXISTS Address(
     id text, 
     location text 
    )""" 
) 
session.executeCreateTable(""" 
    CREATE TABLE IF NOT EXISTS Person(
     id text, 
     name text, 
     address frozen <Address>, 
     PRIMARY KEY((id),name) 
    )""" 
) 

Hope qui aide/fonctionne.

Cordialement