Весной я работаю над созданием DAO для Cassandra.
Теперь у меня есть вопрос относительно многократного использования составных классов в объекте.
У меня есть этот параметр класса:
@Table(value = "settings")
public class Setting {
@PrimaryKey
private User owner;
@Column("key")
private String key;
@Column("value")
private String value;
@Column("updated_by")
private User updatedBy;
}
И пользователь класса:
@PrimaryKeyClass
public class User implements Serializable{
@PrimaryKeyColumn(name = "userId", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
private String id;
@PrimaryKeyColumn(name = "userIdType", ordinal = 1, type = PrimaryKeyType.PARTITIONED)
private String idType;
}
Итак, я использую класс User дважды. Один раз как первичный ключ «владелец» и один раз как «updatedBy».
При использовании этого в классах CassandraOperations он отлично работает как первичный ключ, но не как другой столбец.
Он жалуется на то, что имя столбца userId
уже используется. Имеет смысл. Итак, как я могу заставить это работать?
Возможно, я мог бы использовать пользовательские типы?
CREATE TYPE test_keyspace.user (
id text,
id_type text
);
Но как я могу сделать это из аннотаций Java?
Или как я могу повторно использовать один и тот же класс в противном случае? Принимая во внимание относительно простые структуры данных в Cassandra, я также могу сгладить класс User как единую строку, например idType.id
.
Спасибо за любую помощь!