当前位置: 首页 > 知识库问答 >
问题:

Cassandra java驱动程序UDT映射

花飞尘
2023-03-14

所以我在Cassandra数据库中有一个UDT:

CREATE TYPE cs4224.OrderLine (
    OL_I_ID int,
    OL_DELIVERY_D timestamp,
    OL_AMOUNT float,
    OL_SUPPLY_W_ID int,
    OL_QUANTITY int,
    OL_DIST_INFO varchar
);

当我查询这个时,我可以得到UDTValue,但我不确定如何映射到UDTClass,因为我使用的是Cassandra Java驱动程序2.2.0rc3

在2.1中,有一些类似于本教程的说明。但在2.2.0中,这个(UDTMapper)似乎已经被删除或尚未添加。怎样才能做同样的事情,或者仅仅为了达到同样的效果?

谢谢。

共有1个答案

邓阳炎
2023-03-14

事实证明,在2.2.0rc3中,我根本不需要UDTMapper。基本上,有一个UDTValue类,我可以通过使用getInt或类似的方法来利用它来获得我想要的任何值。下面是一个代码示例

Map<Integer, UDTValue> ols = row.getMap("o_ols", Integer.class, UDTValue.class);
for (Integer key: ols.keySet()) {
     UDTValue ol = ols.get(key);
     olIId = ol.getInt("ol_i_id");
     olQuantity = ol.getInt("ol_quantity");
     olDistInfo = ol.getString("ol_dist_info");
     olSupplyWId = ol.getInt("ol_supply_w_id");
     olAmount = ol.getFloat("ol_amount");
     olSum += olAmount;
     newOrderLine = orderLineType.newValue()
         .setInt("OL_I_ID", olIId)
         .setTimestamp("ol_delivery_d", new Timestamp(now.getTime()))
         .setFloat("ol_amount", olAmount)
         .setInt("ol_supply_w_id", olSupplyWId)
         .setInt("ol_quantity", olQuantity)
         .setString("ol_dist_info", olDistInfo);
     orderLines.put(key, newOrderLine);
 }

希望这也能帮助其他人。

 类似资料:
  • 用于cassandra的Datastax Java驱动程序(cassandra-driver-core 2.0.2)支持PreparedStatements以及QueryBuilder API。使用其中一种比另一种有什么特别的优势吗?缺点? 文档:http://www.datastax.com/documentation/developer/java-driver/2.0/common/drive

  • 我试图用用户定义的类型作为分区键在cassandra中存储对象。我使用datastax java驱动程序进行对象映射,虽然我能够插入到数据库中,但我无法检索对象。如果我将分区键更改为使用非udt(如文本),我就能够保存和检索(即使对象上有其他相同类型的udt)。从阅读文档中可以看出,允许UDT作为密钥。我也没有发现任何迹象表明java驱动程序不支持UDT作为键。在对象映射过程中,它看起来是失败的,

  • 我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。

  • 在Eclipse BIRT数据资源管理器中为查询生成器添加JDBC数据库连接: 选择“查询生成器的JDBC数据库连接” 就这样。我可以使用此数据源来使用数据集。 下一个。 我希望使用更灵活的“JDBC数据源”,而不是以前成功使用的“查询生成器的JDBC数据库连接”。哦,我看到MySQL没有驱动程序类-Derby和Sample只有两个默认条目。 似乎JDBC驱动程序的有效注册没有添加(或注册?)司机

  • 对于ex,当我的chrome放在Compand提示符中时,会给出路径-/applications/google\chrome.app system.setproperty(“webdriver.chrome.driver”,“/applications/google/chrome.app”);WebDriver driver=new ChromeDriver(); driver.get(“http