【问题标题】:kundera-cassandra set cql version on EntityManagerFactory when using spring使用spring时kundera-cassandra在EntityManagerFactory上设置cql版本
【发布时间】:2016-03-25 01:42:09
【问题描述】:

我想在 kundera-cassandra (V3.2) 实体中使用序列生成器。参考这个https://github.com/impetus-opensource/Kundera/issues/777,我必须在创建EntityManagerFactory 时将CQL 版本设置为版本3,而不是在创建EntityManager 时。我的问题是我使用 Spring 并且在自动装配 EntityManagerFactory 时不知道如何设置属性。

@Id
@TableGenerator(name = "id_gen", allocationSize = 30, initialValue = 100)
@GeneratedValue(generator = "id_gen", strategy = GenerationType.TABLE)
private String id;

在我的存储库中,我像这样定义EntityManagerFactory

@PersistenceUnit
private EntityManagerFactory entityManagerFactory;

在我的 application-context.xml 中,我这样定义 Bean:

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="cassandra_pu" />
</bean> 

<bean id="pum" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="persistenceXmlLocations">
        <list>
            <value>classpath:persistence.xml</value>
        </list>
    </property>
</bean>

那么谁能告诉我在哪里设置版本属性?

【问题讨论】:

    标签: java spring cassandra kundera


    【解决方案1】:

    您可以执行以下操作:

    • 创建一个 xml 文件,例如 cass-props.xml 并添加以下内容:

    <?xml version="1.0" encoding="UTF-8"?> <clientProperties> <datastores> <dataStore> <name>cassandra</name> <connection> <properties> <property name="cql.version" value="3.0.0" /> </properties> <servers> <server> <host> localhost </host> <port> 9160 </port> </server> </servers> </connection> </dataStore> </datastores> </clientProperties>

    • 然后在你的persistence.xml中添加以下属性

      &lt;property name="kundera.client.property" value="cass-props.xml" /&gt;

    【讨论】:

    • 谢谢,我试过了,出现以下错误:com.impetus.kundera.KunderaException: InvalidRequestException(why:Unknown key identifier sequence_name)。查看表格时kundera_sequences 没有看到sequence_name 列,只有keysequence_value
    • 我将pkColumnName="key" 添加到@TableGenerator(name = "id_gen", allocationSize = 30, initialValue = 100),现在它正在工作
    猜你喜欢
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2017-04-30
    • 2013-09-09
    • 2016-01-15
    相关资源
    最近更新 更多