Java 卡桑德拉自动模式生成器

Java 卡桑德拉自动模式生成器,java,hibernate,cassandra,datastax,Java,Hibernate,Cassandra,Datastax,首先,我是卡桑德拉的新手,我来自关系数据库。我使用了HibernateAPI,这使得与数据库相关的任务非常简单。我使用datastax中基于java的驱动程序来连接和执行查询。他们提供了实现JPA的映射库。到现在为止,一直都还不错。我创建了一个模型类,如下所示: @Table(keyspace = "webscc", name = "t_data", readConsistency = "QUORUM", writeConsistency = "QUORUM",caseSensitiveKey

首先,我是卡桑德拉的新手,我来自关系数据库。我使用了HibernateAPI,这使得与数据库相关的任务非常简单。我使用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);
Session Session=Cluster.builder().addContactPoint(props.getProperty(HOSTNAME)).build()
.connect(props.getProperty(KEYSPACE));
MappingManager=新的MappingManager(会话);
Mapper Mapper=manager.Mapper(ChartData.class);
ChartData ChartData=新的ChartData(“控制器”,24.44);
保存(图表数据);

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

Datastax驱动程序映射器不会自动创建表

在这方面有一个悬而未决的问题:

您必须首先手动创建表

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" +
        "    )");

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