首页 > 解决方案 > 您可以从带注释的类生成二级索引 DDL 语句吗?

问题描述

我目前正在使用生成“CREATE TABLE”语句SpannerShemaUtils.getCreateTableDdlStringsForInterleavedHierarchy(Class)

例子

@Table(name = "#{@googleSpannerTablePrefix}Person")
public class Person {
   @PrimaryKey
   Integer personId;
   String name;
   Integer age;
}

生成创建表 DDL

SpannerShemaUtils.getCreateTableDdlStringsForInterleavedHierarchy(Person.class)

这产生

CREATE TABLE Person (  personId INT64 ,  name STRING(MAX) , age INT64 ) PRIMARY KEY ( personId );

如果@googleSpannerTablePrefix bean 设置为“Example”,它会生成这个。

CREATE TABLE ExamplePerson (  personId INT64 ,  name STRING(MAX) , age INT64 ) PRIMARY KEY ( personId );

@Table 注释允许 sPel 表达式(见上文),因此我可以为表名添加前缀。

有没有办法以同样的方式生成 Create index DDL 语句?

标签: spring-bootgoogle-cloud-spanner

解决方案


我检查了 api 文档。https://docs.oracle.com/javaee/7/api/javax/persistence/Index.html 和以下代码可能有效。你能试试这个吗?

@Table(name = "#{@googleSpannerTablePrefix}Person", 
    indexes=[@Index(name="#{@googleSpannerTablePrefix}Person_1", columnList="name")])

推荐阅读