【发布时间】:2015-07-01 02:19:24
【问题描述】:
有没有办法在我们通过BoundStatement.setSet(..) 方法提供给DataStax Java 驱动程序的集合类型中使用我们的类型(我们提供的类)而不使用用户定义类型?也许使用对象映射 API?
如果是这样,当我们创建表时,SET 中的 type 应该使用什么(换句话说:SET<????>)?
我们正在使用连接到 DSE v4.6.0 (Cassandra 2.0.11.83) 的 DataStax Java Driver v2.1.5。
这里有一个例子来说明:
CREATE TABLE teams (uid TEXT PRIMARY KEY, players SET<????>);
我们的类型:
public class Player {
private String name;
public Player(String name) { this.name = name; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
测试:
public void testSets(){
Set<Player> players = new HashSet<>();
players.add(new Player("Nick"));
players.add(new Player("Paul"));
players.add(new Player("Scott"));
PreparedStatement statement = session.prepare("INSERT INTO teams (uid, players) values (?,?);");
BoundStatement boundStatement = new BoundStatement(statement);
boundStatement.setString("uid", ...);
boundStatement.setSet("players", players);
session.execute(boundStatement);
}
【问题讨论】:
标签: cassandra datastax datastax-enterprise datastax-java-driver