【问题标题】:Cassandra automatic schema generatorCassandra 自动模式生成器
【发布时间】:2017-11-08 21:28:27
【问题描述】:

首先,我是 Cassandra 的新手,我来自关系数据库。我使用了 Hibernate API,它使与数据库相关的任务变得非常简单。我正在使用来自 datastax 的基于 java 的驱动程序来连接和执行查询。他们提供了实现 JPA 的映射库。到目前为止,一切都很好。我创建了一个模型类如下:

@Table(keyspace = "webscc", name = "t_data", readConsistency = "QUORUM", 
writeConsistency = "QUORUM",caseSensitiveKeyspace = false, 
caseSensitiveTable = false)
public class ChartData {
    @PartitionKey
    private UUID    id;
    @ClusteringColumn(0)
    private Date    timeStamp;
    @ClusteringColumn(1)
    private String  controller; 
    @Column(name = "value")
    private double  value;
    /** Constructors, getters and setters*/
}

现在我想创建一个新的 ChartData 对象并将其保存到数据库中。为此,我想实现 Mapper。

Session session = Cluster.builder().addContactPoint(props.getProperty(HOSTNAME)).build()
                         .connect(props.getProperty(KEYSPACE));
MappingManager manager = new MappingManager(session);
Mapper<ChartData> mapper = manager.mapper(ChartData.class);
ChartData chartData = new ChartData("controller",24.44);
mapper.save(chartData);

我配置了所有内容,但仍然无法将 ChartData 对象保存到表中。问题是它无法自动创建表格,尽管我通过注释在 ChartData 中配置了所有内容。我做错了什么,还是应该手动创建所有必需的表。为什么它不像 Hibernate 那样自动创建数据库模式?

【问题讨论】:

  • 项目中有persistence.xml文件吗?
  • 不,我按照datastax的教程。他们没有提到persistence.xml文件,我想注释就足够了。

标签: java hibernate cassandra datastax


【解决方案1】:

Datastax Driver 映射器不会自动创建表

关于这个有一个未解决的问题:https://datastax-oss.atlassian.net/browse/JAVA-569

您必须先手动创建表。

CREATE TABLE webscc.t_data(
    id uuid,
    timestamp timestamp,
    controller text,
    value double,
    PRIMARY KEY (id, timestamp, controller)
);

或者在会话初始化后使用下面的代码

session.execute("CREATE TABLE IF NOT EXISTS webscc.t_data(\n" +
        "        id uuid,\n" +
        "        timestamp timestamp,\n" +
        "        controller text,\n" +
        "        value double,\n" +
        "        PRIMARY KEY (id, timestamp, controller)\n" +
        "    )");

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2018-04-28
    • 2011-07-30
    • 1970-01-01
    • 2017-05-05
    • 2015-07-05
    • 2019-05-01
    • 2011-05-22
    • 2012-11-10
    相关资源
    最近更新 更多