Я работаю над отображением двух таблиц с минимальными различиями в Cassandra, однако Kundera не может правильно отобразить мою модель (я настроил ее для проверки сопоставлений с таблицами на EntityManager создание). С учетом следующего соединения ключ (структурированы в соответствии с these directions, since paging is desired и дополнительно используя Datastax Driver:Kundera-Cassandra Отсутствие карты Compund Keys для объектов с MappedSuperClass
CQL таблица создает имеют следующий первичный ключ для обеих таблиц:
PRIMARY KEY ((key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11), "clusteringKey")
PartitionKey:
@Embeddable
public class PartitionKey {
@Column
private key1
//repeat for 11 more keys
}
ClusteringKey :
@Embeddable
public class ClusteringKey {
@Embedded
private PartitionKey key;
@Column
private UUID clusteringKey;
}
Prope rties для CQL3:
public static EntityManagerFactory getEntityManagerFactory() throws IOException {
if(entityManagerFactory == null) {
entityManagerFactory = Persistence.createEntityManagerFactory("cassandra_pu",getProperties());
}
return entityManagerFactory;
}
public static Properties getProperties() throws IOException {
if(properties == null) {
properties = new Properties();
properties.load(Application.class.getResourceAsStream("/application.properties"));
properties.put(CassandraConstants.CQL_VERSION, CassandraConstants.CQL_VERSION_3_0);
}
return properties;
}
Я попытался использовать две модели до сих пор.
Первый случай:
SuperRecord:
@MappedSuperClass
public abstract class SuperRecord {
@EmbeddedId
private ClusteringKey clusteringkey;
//Additional Fields
}
//extended by StagingRecord, ProductionRecord
Хотя сам ClusteringKey карты правильно, ничего связано с PartitionKey не отображает вообще.
В моей второй попытки:
SuperRecord:
@MappedSuperClass
public abstract class SuperRecord {
//Common fields excluding keys
}
StagingRecord:
@Entity
public class StagingRecord extends SuperRecord {
@EmbeddedId
private ClusteringKey key;
}
ProductionRecord:
@Entity
public class ProductionRecord extends SuperRecord {
@EmbeddedId
private ClusteringKey key;
@Column(name="solr_query")
private String solrQuery;
}
В этой попытке, в то время как мой кластерной ке y maps, my partitionkey отображает как уникальный бинарный объект, а не его составляющие столбцы по желанию.
Что препятствует правильному отображению моего PartitionKey и как его исправить?
Edit:
После распределения суперкласса полей, я обнаружил, что @MappedSuperclass
не является фактором в моем вопросе; только вложенные @Embeddeds
. Кроме того, если бы мне пришлось объединять классы PartitionKey и ClusteringKey, сопоставление будет проходить проверку (хотя он не сможет правильно построить подпись метода токена в сгенерированном CQL для разбивки на страницы, так как моя модель больше не соответствует ожиданию этой функции).
Вы включили CQL3 при создании таблиц? –