У меня есть следующие отношения с использованием аннотаций 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 не находит столбец в Job для индексации:
org.hibernate.MappingException: Unable to find logical column name from physical name null in table jobs
Кто-нибудь знает, как создавать индексы для внешних ключей JoinTable с использованием Hibernate?