昆德拉未配置 ColumnFamily 尽管 ColumnFamily 存在
Kundera Unconfigured ColumnFamily despite ColumnFamily existing
我正在尝试在作业过程中将日志记录写入 table。不幸的是,尽管 table 存在(通过使用 JDBC 客户端查询 table 确认),Kundera 不相信它存在,抛出:
com.impetus.kundera.configure.schema.SchemaGenerationException:
InvalidRequestException(why:unconfigured columnfamily ingestionBatchSummary)
这是我的 persistence.xml:
<persistence-unit name="cassandra_pu">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<properties>
<property name="kundera.client.lookup.class"
value="com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory" />
<property name="kundera.ddl.auto.prepare" value="validate" />
</properties>
</persistence-unit>
连同我在创建 EntityManager 时加载的属性文件(使用 ApplicationConfiguration.getProperties() 加载):
kundera.nodes=127.0.0.1
kundera.port=9042
kundera.keyspace=migration
kundera.username=notsecret
kundera.password=supersecret
我的实体:
@Entity
@Table(name="ingestionBatchSummary")
public class BatchSummary {
@Id
@Column(name="batchUuid")
private UUID batchUUID; //UUID of Batch
@Column(name="stuff")
private String stuff; //log contents
//Getters, setters
}
以及引发我错误的魔法线:
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("cassandra_pu",
ApplicationConfiguration.getProperties());
我已通过查询确认keyspace和table存在,我已确认属性与服务器匹配,我已确认属性已正确加载(成功连接并出现keyspace在日志中)。有没有其他原因导致昆德拉可能无法认识到这个table的存在?
解决了我的问题:table 是用 CREATE TABLE IngestionBatchSummary
而不是 CREATE TABLE "IngestionBatchSummary"
创建的。结果,table 以全小写的名称存在。我错过了这个事实,因为我的 JDBC 查询也不包含引号,而昆德拉的查询显然包含。
我正在尝试在作业过程中将日志记录写入 table。不幸的是,尽管 table 存在(通过使用 JDBC 客户端查询 table 确认),Kundera 不相信它存在,抛出:
com.impetus.kundera.configure.schema.SchemaGenerationException:
InvalidRequestException(why:unconfigured columnfamily ingestionBatchSummary)
这是我的 persistence.xml:
<persistence-unit name="cassandra_pu">
<provider>com.impetus.kundera.KunderaPersistence</provider>
<properties>
<property name="kundera.client.lookup.class"
value="com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory" />
<property name="kundera.ddl.auto.prepare" value="validate" />
</properties>
</persistence-unit>
连同我在创建 EntityManager 时加载的属性文件(使用 ApplicationConfiguration.getProperties() 加载):
kundera.nodes=127.0.0.1
kundera.port=9042
kundera.keyspace=migration
kundera.username=notsecret
kundera.password=supersecret
我的实体:
@Entity
@Table(name="ingestionBatchSummary")
public class BatchSummary {
@Id
@Column(name="batchUuid")
private UUID batchUUID; //UUID of Batch
@Column(name="stuff")
private String stuff; //log contents
//Getters, setters
}
以及引发我错误的魔法线:
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("cassandra_pu",
ApplicationConfiguration.getProperties());
我已通过查询确认keyspace和table存在,我已确认属性与服务器匹配,我已确认属性已正确加载(成功连接并出现keyspace在日志中)。有没有其他原因导致昆德拉可能无法认识到这个table的存在?
解决了我的问题:table 是用 CREATE TABLE IngestionBatchSummary
而不是 CREATE TABLE "IngestionBatchSummary"
创建的。结果,table 以全小写的名称存在。我错过了这个事实,因为我的 JDBC 查询也不包含引号,而昆德拉的查询显然包含。