昆德拉未配置 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 查询也不包含引号,而昆德拉的查询显然包含。