0

有没有在我们提供给通过BoundStatement.setSet(..)方法DataStax Java驱动程序,而无需使用用户定义类型的集合类型的使用我们的类型(我们提供的类)的方法吗?也许使用Object Mapping API?使用自定义类

如果是这样,当我们创建表格时,我们应该如何使用类型中的SET(换句话说:SET<????>)?

我们使用连接到DSE v4.6.0的DataStax Java驱动程序v2.1.5(卡桑德拉2.0.11.83)。

下面是一个例子来说明:

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); 

} 

回答

1

可惜你不能做到这一点今天的驱动程序或它的对象映射API然而。今天开放的一个未解决的问题(JAVA-722)是为了解决驱动程序下一版本(2.1.6)中涉及的这个和其他映射相关的不足(相关问题)。

这也可能是值得考虑看看Achilles通过其Type Transformer支持这一点。