【问题标题】:kundera: java.lang.ClassCastException: java.lang.String cannot be cast to [Bkundera: java.lang.ClassCastException: java.lang.String 无法转换为 [B
【发布时间】:2016-09-05 09:27:17
【问题描述】:

我想使用 kundera 框架将一个对象插入到 cassandra 中,但我收到此错误:

java.lang.RuntimeException: java.lang.ClassCastException: java.lang.String cannot be cast to [B
        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: java.lang.ClassCastException: java.lang.String cannot be cast to [B
        at org.apache.storm.tuple.TupleImpl.getBinaryByField(TupleImpl.java:185) ~[storm-core-1.0.0.jar:1.0.0]
        at connector.bolt.PrinterBolt.execute(PrinterBolt.java:59) ~[Zorro-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

我的实体类

@Entity
@Table(name = "pieces", schema = "piece@cassandra_pu")
public class PieceEntitie implements Serializable{

    @Id private String IdPiece;
    @Column private double width;
    @Column private double height;
    @Column private double depth;
    public PieceEntitie() {
        // TODO Auto-generated constructor stub
    }
.
.
.
}

我按照教程进行操作:https://github.com/impetus-opensource/Kundera/wiki/Getting-Started-in-5-minutes

您对这个问题的根源有什么想法吗?我们如何解决它? 谢谢

【问题讨论】:

  • 这不是课,你应该看看
  • 我不明白你的意思是这不是类。我试图将对象 PieceEntitie 保存到 cassandra 中,但我收到此错误

标签: java hibernate cassandra kundera


【解决方案1】:

使用 Storm 方法 TupleImpl.getBinaryByField() 时出现问题,它会抛出异常,即无法从 String 获取 byte[]。 Storm 元组内部有一些字符串值,而您正在尝试获取字节数组。

【讨论】:

  • 我知道,为此我将 byte[] 转换为字符串
  • 如果将 byte[] 转换为 String 为什么要尝试获取 byte[]?此方法“getBinaryByField”用于获取字节 [],而不是字符串。
  • 我没有使用任何名为 getBinaryByField 的方法
  • 你的堆栈跟踪表明你做到了。 ' 在 org.apache.storm.tuple.TupleImpl.getBinaryByField(TupleImpl.java:185) ~[storm-core-1.0.0.jar:1.0.0] 在 connector.bolt.PrinterBolt.execute(PrinterBolt.java:59 ) ~[Zorro-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?]'
  • 那是在从 spout 接收数据之后,字节和字符串之间没有关系,因为我尝试使用静态数据 public PieceEntitie() { width=0;height=0;depth=0; id="1"; } 我收到了同样的错误
猜你喜欢
  • 1970-01-01
  • 2011-06-07
  • 2012-12-10
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
相关资源
最近更新 更多