【问题标题】:Create table if they do NOT exist如果它们不存在则创建表
【发布时间】:2016-09-18 05:00:57
【问题描述】:

目前有一些架构操作可让您在每次启动时重新创建表,但删除它们显然意味着您会丢失该表的所有行。 在 CQL 中,您可以进行类似的查询

    CREATE TABLE IF NOT EXISTS keyspace.tablename(....)

但我找不到任何使用 spring-data-casssandra 实现类似结果的方法,这种方法可以让我第一次启动我的应用程序,并且无需更改任何内容。

有什么方法可以创建一个在 POJO 中定义的表,只有在该表不存在的情况下才使用@Table?

【问题讨论】:

    标签: java cassandra spring-data spring-data-cassandra


    【解决方案1】:

    DATACASS-219

    我最近刚刚添加了对CREATE TABLE IF NOT EXISTS keyspace.tablename (..); 的支持。这将在 SD Cassandra 1.5 M1 (Ingals) 中提供。我会考虑支持将 1.4.2.RELEASE 移植到 1.4。

    暂时完成此操作的唯一其他方法(如果不使用包含DATACASS-219 修复的1.5.0.BUILD-SNAPSHOT)是将您的SchemaAction 设置为NONE 并提供您自己的原始CQL,初始化脚本CassandraSessionFactoryBean 使用 setStartupScripts(:List) 方法。

    【讨论】:

    • 在哪个存储库下可以找到包含此修复的版本? Maven 似乎在link 中找不到它,虽然我可以在这里看到它link,但它说它最后一次修改是在 2016 年 4 月 6 日。这是正确的版本吗?
    • 刚刚解决了,spring boot 改变了工件名称,所以它在另一个目录中寻找它。谢谢
    • 将版本更改为快照会引发此错误:调用 init 方法失败;嵌套异常是 java.lang.NoClassDefFoundError: io/netty/util/Timer
    • 您可能需要包含 Netty 依赖项,因为 DataStrax Cassandra 驱动程序在执行异步操作时依赖它。 io.nettynetty-all4.0.36.Final
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2013-12-07
    • 2010-12-03
    • 2017-12-22
    • 2013-05-26
    相关资源
    最近更新 更多