尽管存在ColumnFamily,Kundera仍未配置ColumnFamily

时间:2016-05-26 19:56:23

标签: jpa kundera

我正在尝试在作业过程中将记录记录写入表中。不幸的是,尽管表存在(通过使用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());

我已经通过查询来确认密钥空间和表存在,我已经确认属性与服务器匹配,我已经确认属性已正确加载(成功连接和密钥空间出现在日志中)。昆德拉可能没有认识到这张桌子存在的原因还有其他原因吗?

1 个答案:

答案 0 :(得分:1)

弄清楚我的问题:该表是使用CREATE TABLE IngestionBatchSummary而不是CREATE TABLE "IngestionBatchSummary"创建的。结果,该表以全小写名称存在。我错过了这个事实,因为我的JDBC查询也没有包含引号,而昆德拉的查询显然也是如此。