我正在尝试在作业过程中将记录记录写入表中。不幸的是,尽管表存在(通过使用JDBC客户端查询表确认),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());
我已经通过查询来确认密钥空间和表存在,我已经确认属性与服务器匹配,我已经确认属性已正确加载(成功连接和密钥空间出现在日志中)。昆德拉可能没有认识到这张桌子存在的原因还有其他原因吗?
答案 0 :(得分:1)
弄清楚我的问题:该表是使用CREATE TABLE IngestionBatchSummary
而不是CREATE TABLE "IngestionBatchSummary"
创建的。结果,该表以全小写名称存在。我错过了这个事实,因为我的JDBC查询也没有包含引号,而昆德拉的查询显然也是如此。