Есть ли способ использовать наши типы (классы, которые мы предоставляем) в типах коллекций, которые мы предоставляем драйверу Java DataStax с помощью метода BoundStatement.setSet(..)
, без использования определяемых пользователем типов? Возможно, с API сопоставления объектов?
И если да, то когда мы создадим таблицу, что мы должны использовать для типа в SET
(другими словами: SET<????>
)?
Мы используем драйвер DataStax Java версии 2.1.5, подключенный к DSE версии 4.6.0 (Cassandra 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);
}