java – Datastax QueryBuilder插入语句
发布时间:2020-12-15 04:17:49 所属栏目:Java 来源:网络整理
导读:使用来自Datastax Java Driver for Cassandra的QueryBuilder构建插入语句的正确方法是什么 我正在使用Cassandra 2.x和Java Driver 2.0.0-rc1 我知道我可以使用预准备语句来实现相同的目标,但我期待着使用QueryBuilder @Testpublic void testTableInsert() {
使用来自Datastax
Java Driver for Cassandra的QueryBuilder构建插入语句的正确方法是什么
我正在使用Cassandra 2.x和Java Driver 2.0.0-rc1 我知道我可以使用预准备语句来实现相同的目标,但我期待着使用QueryBuilder @Test public void testTableInsert() { Insert insert = QueryBuilder .insertInto(KEYSPACE_NAME,TABLE_NAME) .value("username","jdoe") .value("first","John") .value("last","Doe"); System.out.println(insert.toString()); ResultSet result = session.execute(insert.toString()); System.out.println(result); } 我可以确认查询字符串是有效的,因为它在cqlsh上手动尝试时成功 INSERT INTO test.user(username,first,last) VALUES ('jdoe','John','Doe'); 驱动程序报告的错误是 com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured columnfamily user at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35) at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:271) at com.datastax.driver.core.ResultSetFuture.getUninterruptibly(ResultSetFuture.java:187) at com.datastax.driver.core.Session.execute(Session.java:126) at com.datastax.driver.core.Session.execute(Session.java:77) at SimpleClientTest.testTableInsert(SimpleClientTest.java:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured columnfamily user at com.datastax.driver.core.Responses$Error.asException(Responses.java:96) at com.datastax.driver.core.ResultSetFuture$ResponseCallback.onSet(ResultSetFuture.java:122) at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:224) at com.datastax.driver.core.RequestHandler.onSet(RequestHandler.java:359) at com.datastax.driver.core.Connection$Dispatcher.messageReceived(Connection.java:510) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:695) 我在here的官方文档页面上找不到任何示例 解决方法
你只是忘了创建键空间.
用于创建KS,创建CF并使用querybuilder插入分区的完整代码. public static void main(String[] Args) { Cluster cluster = null; cluster = Cluster.builder() .addContactPoint("127.0.0.1") .build(); Session session = cluster.connect(); try { String createKS = "CREATE KEYSPACE test WITH REPLICATION = { 'class': 'SimpleStrategy','replication_factor': '2' }"; session.execute(createKS); String query = "create table test.user (username text primary key,first text,last text);"; session.execute(query); System.out.println("insert executed"); Insert insert = QueryBuilder.insertInto("test","user") .value("username","jdoe") .value("first","John") .value("last","Doe"); System.out.println(insert.toString()); ResultSet result = session.execute(insert.toString()); System.out.println(result); } catch (Exception ex) { ex.printStackTrace(); } System.exit(0); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |