2016-05-11 4 views
0

quand j'ai essayé de sauver une table à cassandra en utilisant la méthode persist() et kundera cadre, je reçois l'erreur:InvalidRequestException (pourquoi: ligne 1: 184 caractères ne correspondent pas ')' attendre '-')

18976 [Thread-15-localhostAMQPbolt0-executor[2 2]] INFO c.i.c.c.CassandraClientBase - Returning cql query INSERT INTO "pieces"("width","depth","height","idpiece") VALUES(10.0,12.0,11.0,'1') . 
18998 [Thread-15-localhostAMQPbolt0-executor[2 2]] INFO d.c.DatabaseController - insert piece to database: SUCCESS 
18998 [Thread-15-localhostAMQPbolt0-executor[2 2]] INFO d.d.SensorDAOImpl - start to insert data 
19011 [Thread-15-localhostAMQPbolt0-executor[2 2]] INFO c.i.c.c.CassandraClientBase - Returning cql query INSERT INTO "sensors"("event_time","temperature","pressure","IdSensor","date","this$0") VALUES(1462959800344,10.0,10.0,'1',150055,[email protected]) . 
19015 [Thread-15-localhostAMQPbolt0-executor[2 2]] ERROR c.i.c.c.CassandraClientBase - Error while executing query INSERT INTO "sensors"("event_time","temperature","pressure","IdSensor","date","this$0") VALUES(1462959800344,10.0,10.0,'1',150055,[email protected]) 
19015 [Thread-15-localhostAMQPbolt0-executor[2 2]] INFO c.i.c.c.CassandraClientBase - Returning delete query DELETE FROM "pieces" WHERE "idpiece" = '1'. 
19018 [Thread-15-localhostAMQPbolt0-executor[2 2]] ERROR o.a.s.util - Async loop died! 
java.lang.RuntimeException: com.impetus.kundera.KunderaException: com.impetus.kundera.KunderaException: InvalidRequestException(why:line 1:184 mismatched character ')' expecting '-') 
     at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:448) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:414) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:73) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.daemon.executor$fn__8226$fn__8239$fn__8292.invoke(executor.clj:851) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.util$async_loop$fn__554.invoke(util.clj:484) [storm-core-1.0.0.jar:1.0.0] 
     at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] 
     at java.lang.Thread.run(Thread.java:745) [?:1.7.0_99] 
Caused by: com.impetus.kundera.KunderaException: com.impetus.kundera.KunderaException: InvalidRequestException(why:line 1:184 mismatched character ')' expecting '-') 
     at com.impetus.kundera.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:180) ~[project-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?] 
     at database.dao.SensorDAOImpl.insert(SensorDAOImpl.java:54) ~[project-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?] 
     at database.controller.DatabaseController.saveSensorEntitie(DatabaseController.java:49) ~[project-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?] 
     at connector.bolt.PrinterBolt.execute(PrinterBolt.java:66) ~[project-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?] 
     at org.apache.storm.daemon.executor$fn__8226$tuple_action_fn__8228.invoke(executor.clj:731) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.daemon.executor$mk_task_receiver$fn__8147.invoke(executor.clj:463) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.disruptor$clojure_handler$reify__7663.onEvent(disruptor.clj:40) ~[storm-core-1.0.0.jar:1.0.0] 
     at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:435) ~[storm-core-1.0.0.jar:1.0.0] 
     ... 6 more 

que vous voyez que je veux utiliser mon OneToMany entité pièce de classe

@Entity 
@Table(name = "pieces", schema = "[email protected]_pu") 
public class PieceEntitie implements Serializable{ 

    @Id 
    private String IdPiece; 
    @Column 
    private double width; 
    @Column 
    private double height; 
    @Column 
    private double depth; 

mon entité capteur de classe

@EmbeddedId 
    private CompoundKey key; 
    @Column 
    private float temperature; 
    @Column 
    private float pressure; 

    @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER) 
    @JoinColumn(name="idsensor") 
    private List<PieceEntitie> pieces; 



    @Embeddable 
    public class CompoundKey 
    { 
      @Column 
      private String IdSensor;   
      @Column 
      private long date;   
      @Column(name = "event_time") 
      private long eventTime; 



    } 

mes tables:

CREATE TABLE mykeyspace.sensors (
    idsensor text, 
    date bigint, 
    event_time timestamp, 
    pressure float, 
    temperature float, 
    PRIMARY KEY ((idsensor, date), event_time) 
) WITH CLUSTERING ORDER BY (event_time ASC) 
    AND bloom_filter_fp_chance = 0.01 
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} 
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99.0PERCENTILE'; 

cqlsh:sensor> DESCRIBE table pieces ; 

CREATE TABLE mykeyspace.pieces (
    idpiece text PRIMARY KEY, 
    depth double, 
    height double, 
    idsensor text, 
    width double 
) WITH bloom_filter_fp_chance = 0.01 
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} 
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99.0PERCENTILE'; 

tutoriel suivi; https://github.com/impetus-opensource/Kundera/wiki/Polyglot-Persistence

comment puis-je résoudre ce problème?

Répondre

0

J'ai résolu le problème en séparant la classe CompoundKey et la classe de capteur. avant de mettre la classe CompoundKey dans la classe de capteur, donc Kundera essayait d'insérer CompoundKey comme attribut