【问题标题】:How do I create an index on join tables using Hibernate annotations?如何使用 Hibernate 注释在连接表上创建索引?
【发布时间】: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 外键上创建索引?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    这并不完全是您希望收到的答案,但这是预期的行为。换句话说:这是不支持的。有关详细信息,请参阅以下 JIRA:

    https://hibernate.atlassian.net/browse/HHH-4263

    【讨论】:

    • 不是我想要的,但我想这是我需要听到的。
    猜你喜欢
    • 2011-01-14
    • 2011-12-20
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 2017-11-03
    • 2023-03-28
    • 2021-02-23
    相关资源
    最近更新 更多