你能从带注释的类生成二级索引DDL语句吗



我当前正在生成"创建表格";使用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被设置为";实例";它将生成此。

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

@Table注释允许使用sPel表达式(见上文(,这样我就可以在表名前面加前缀。

是否有一种方法可以以相同的方式生成创建索引DDL语句

我检查了api文档。https://docs.oracle.com/javaee/7/api/javax/persistence/Index.html并且下面的代码可以工作。你能试试这个吗?

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

根据我对SpannerSchemaUtils.java的研究,使用此类创建辅助索引似乎是不可能的。该类仅支持为表生成DDL语句;即在代码中没有对处理表CCD_ 2的引用。

这个项目有一个开源的Github回购;如果您希望对此提供支持,您可以在Issue Tracker中提交功能请求:https://github.com/GoogleCloudPlatform/spring-cloud-gcp/issues

最新更新