2010-12-09 2 views
7

у меня есть отношения следующим образом, используя Hibernate аннотации, это то, что я пробовал:Как создать индекс для таблиц соединений с помощью аннотаций Hibernate?

public class Job{ 

... 

@OneToMany(cascade = CascadeType.ALL) 
@JoinTable(name = "jobs_resource_locations") 
@ForeignKey(name = "job_inputs_fk") 
@Index(name="job_inputs_fk") 
private List<FileSystemLocation> inputs; 

Такого рода вещи хорошо работает на ManyToOne так:

@ManyToOne 
@JoinColumn(name = "service_call_id", referencedColumnName = "id") 
@ForeignKey(name = "job_service_call_fk") 
@Index(name = "job_service_call_fk") 
private ServiceCall serviceCall; 

Я хотел убедиться, что иностранные ключ индексируется на PostgreSQL и что схема похожа на MySQL, поэтому @ForeignKey и @Index с тем же именем (MySQL всегда создает индекс с тем же именем, что и FK).

Я не могу создать индекс на обратной стороне, потому что FileSystemLocation не знает отношения. Следовательно, JoinTable.

Бывший пример не удается, так как Hibernate не находит столбец в Иове индексировать:

org.hibernate.MappingException: Unable to find logical column name from physical name null in table jobs 

Кто-нибудь знает, как создать индексы на JoinTable внешних ключей с использованием Hibernate?

ответ

7

Это не тот ответ, который вы хотели бы получить, но это ожидаемое поведение. Другими словами: это не поддерживается. Смотрите следующий JIRA для получения более подробной информации:

http://opensource.atlassian.com/projects/hibernate/browse/HHH-4263

+0

Не то, что я хотел, но я предполагаю, что это то, что мне нужно было услышать. – 2010-12-22 13:57:01

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