2017-04-12 2 views
2

기존 엔티티에 색인을 추가하고 싶습니다. 특히 특정 항목에 대한 색인을 추가하고 싶습니다. 문서에 따라 다음과 같이 썼습니다 :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 
@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; 
    (...) 
    } 

하지만 인덱스가 작성되지 않았습니다. 그리고 나는 항상 예외를 gotted : EclipseLink가 만든

Caused by: org.postgresql.util.PSQLException: ERROR: error in syntax or/in near "."

쿼리

CREATE INDEX myschema.knife ON potatoe (ORIGIN)]]

이며 나는 그가 인덱스의 이름을 변경 이유를 잘 모릅니다. eclipseLink가 점에 이름이있는 스키마를 추가하는 이유는 무엇입니까? 나는 이것이 "."라고 생각한다. 색인 생성 문제의 이름으로, 그러나 나는 이것을 삭제하는 방법을 모른다.

저는 eclipselink ver 2.5.0 및 postgresql ver 9.1-901에 대한 작업을하고 있습니다. 내가 EclipseLink가 제대로 쿼리 생성, 속성 "스키마"를 삭제

편집 // :

CREATE INDEX knife ON potatoe (ORIGIN)]]

하지만 문제는 몇 가지가 있기 때문에 내가 스키마를 정의해야한다는 것입니다. 따라서 정의 된 스키마가 없으면 관계에 대한 오류 (존재하지 않는 관계). 내 기본 관계가 "myschema"가 아니기 때문에 사실입니다.

나는 포스트 그레스에서 확인 작업 쿼리는 다음과 같다하지만 난이 생성하는 방법을 잘 모릅니다 :

CREATE INDEX knife ON myschema.potatoe (ORIGIN)

누군가가 생각이?

+0

버그처럼 보인다 - 인덱스 스키마 이름 앞에 추가하지 말았어야하지만, 표합니다 - 모든 방법은 주위 –

+0

어쩌면'시도 –

+0

@ Vao Tsun 나는 모든 종류의 주석을 주석으로 칠해 모든 작업을 할 수 없다고 생각한다 :// @Index (name = "knife", columnNames = "origin", table = "potatoe" – newOne

답변

0

내가 참의 chema defining for table in docs 원숭이 해킹을 시도 찾을 수 없습니다 :

@Index(name = "knife", columnNames = "origin", table = "myschema.potatoe") 
관련 문제