【发布时间】:2018-04-12 21:14:26
【问题描述】:
我使用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
有谁知道如何使用 Hibernate 在 JoinTable 外键上创建索引?
【问题讨论】: