如何使用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 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外键上创建索引?
这不是您希望得到的答案,但这是预期的行为。 换句话说:这不受支持。 有关更多详细信息,请参阅以下JIRA:
- Hibernate自动版本控制
- 使用Spring 3,maven,JPA,c3p0在hibernate中“java.lang.NoSuchFieldError:NONE”
- 在Spring 3之前注入Hibernate会话的最佳方法
- 在Play框架中使用ElementCollection时出现LazyInitializationException
- 使用Spring Boot和Logback无法避免hibernate将SQL记录到控制台
- 如何使用Hibernate检索类的成员对象?
- Hibernate – ServiceRegistryBuilder
- Hibernate 3.6.10不会通过OneToMany JoinTable级联删除
- 如何在JPA / Hibernate中使用带字符串类型的@Id?