2016-02-08 2 views
3

Я хочу, чтобы создать индекс, как это показано ниже:Создание date_trunc индекса с помощью Hibernate 4.3.5/JPA 2.1

CREATE INDEX idx_foo_req_date 
ON foo 
USING btree 
(date_trunc('day'::text, req_date)); 

Как/я могу создать его с помощью Java в спящий режим аннотаций?

Я уже читал о @Index аннотацию использовать нравится:

@Table(name = "foo", indexes = { @Index(name = "idx_foo_req_date", columnList = "req_date") }) 

но это создаст л так:

CREATE INDEX idx_foo_req_date 
ON foo 
USING btree 
(req_date); 

UPDATE:

Я подумал, что это довольно гибкий и простой, и я пробовал:

@Table(name = "foo", indexes = { @Index(name = "idx_foo_req_date", columnList = "date_trunc('day'::text, req_date)") }) 

Однако org.hibernate.AnnotationException был брошен, жалуясь на столбцы в columnList.

ответ

2

Hibernate использует JPA @Index аннотация, которая не поддерживает функциональные индексы.

Вам следует использовать Flyway и поддерживать миграцию схемы в инкрементных сценариях.

Смежные вопросы