Java EclipseLink-向Postgress添加索引

Java EclipseLink-向Postgress添加索引,java,postgresql,jpa,eclipselink,Java,Postgresql,Jpa,Eclipselink,我想为我现有的实体添加索引,例如在特定的列上。根据文档,我写了这样的东西: 1.first way @Entity @Table(name = "potatoe", schema = "mySchema") public class Potatoe { (...) @Index(name = "knife", table = "potatoe", schema = "mySchema") private String origin; (...) } 2.second way @Enti

我想为我现有的实体添加索引,例如在特定的列上。根据文档,我写了这样的东西:

1.first way
@Entity
@Table(name = "potatoe", schema = "mySchema")
public class Potatoe {
(...)
@Index(name = "knife", table = "potatoe", schema = "mySchema")
    private String origin;
(...)
}

2.second way
@Entity
@Table(name = "potatoe", schema = "mySchema")
@Index(name = "knife", columnNames = "origin", table = "potatoe", schema = "mySchema")
public class Potatoe {
(...)
    private String origin;
(...)
}

 3. third way(pure jpa)
    @Entity
    @Table(name = "potatoe", schema = "mySchema", indexes = {@javax.persistence.Index(name = "knife", columnList = "origin")})
    public class Potatoe {
    (...)
        private String origin;
    (...)
    }
但不起作用,索引未创建。我总是有例外:

原因:org.postgresql.util.psql异常:错误:语法错误 或在“附近”

EclipseLink创建的查询是

在potatoe上创建索引myschema.knife (原产地)]]

我不知道他为什么要更改索引的名称。为什么eclipseLink在名称中添加点模式?我想这个“.”是以索引生成问题的名义出现的,但我不知道如何删除这个

我正在研究eclipselink 2.5.0版和postgresql 9.1-901版

编辑// 当我删除属性“schema”时,eclipselink将正确创建查询:

在potatoe上创建索引刀 (原产地)]]

但问题是我必须定义模式,因为我有一些。因此,没有定义的模式,这是一个关于关系的错误(关系不存在)。所以这是真的,因为我的默认关系不是“myschema”

我签入Postgres,工作查询如下所示,但我不知道如何生成:

在myschema.potatoe(原点)上创建索引刀


有人知道吗?

我确实找不到s 试试猴子黑客:

@Index(name = "knife", columnNames = "origin", table = "myschema.potatoe")

似乎是一个bug-索引不应该有模式名前缀,但表应该-一路尝试
@index(name=“knife”,columnNames=“origin”,table=“potatoe”)
?。@Vao Tsun我试过了,我认为注释的所有变体和所有不工作:/all都有相同的错误?。不确切地说,当我没有定义模式时,错误是“与nameOfDatabase无关”。它的出现是因为我的默认模式不是“mySchema”,否则错误是相同的。