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支持這一點。