当前位置: 首页 > 面试题库 >

如何使用Hibernate批注在联接表上创建索引?

闾丘淇
2023-03-14
问题内容

我使用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外键上创建索引?


问题答案:

这并不是您想要收到的答案,但这是预期的行为。换句话说:不支持此功能。有关更多详细信息,请参见以下JIRA:

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



 类似资料:
  • 问题内容: 我的项目中有注释驱动的hibernate功能。 现在,我想在列上创建索引。我当前的列定义是 我在这里添加注释 然后删除表并重新启动Tomcat服务器。实例化服务器后,创建了表,但是在以下查询中看不到新索引。 预期用新索引构造表。我在MySQL中使用InnoDB。 问题答案: 有趣的是,在Hibernate配置中,我正在使用。 这修改了一个现有的数据库。我是手动删除该表并重新启动Tomc

  • 我在Oracle SQL Developer中创建了三个表,即 。表是连接表,因为和之间的关系是。 在hibernate中,我为和表创建了两个hibernate类和, 和表在hibernate类中定义如下: 我用一些记录填充了表和,连接表自动填充了一些记录。现在我目前面临的问题是,我想使用hiberante在连接表上使用一个简单的选择语句,如下所示: 我怎么能做到这一点,尽管联接表'Employe

  • 问题内容: 为了在SQL Azure上使用Fluent NHibernate映射,我需要在每个表上都有一个聚集索引。Fluent NHibernate为多对多联接创建的默认堆表显然不这样做,因为它们没有主键。 我希望能够告诉关系的一方为其连接表创建聚簇索引,但是我不确定如何。这是我的映射的样子: 如果您需要更多信息,请告诉我! 问题答案: 我不知道Fluent是否直接支持它(如果不支持,只需包含x

  • 我想使用联接表在两个表之间建立一对多关系。 这就是为什么我想使用联接表: Hibernate单向一对多关联-为什么连接表更好 最后,我想使用Hibernate注释来执行此操作。 我找到了一些使用xml映射实现这一点的示例,但没有使用注释。 我相信这将是如何创建表需要

  • 我有一个mysql内部联接查询,它联接数据库中的3个表,并生成所需的结果集。现在我想使用session.createQuery()编写相应的hibernate查询。我已经在我的项目中为这3个表创建了模型类。没有与3个表关联的映射。mysql查询如下所示。 现在请告诉我如何使用hibernate session.createQuery()编写这个查询?请帮助我。下面是3个表的模型类 帐户. java

  • 我用@query创建了UsersRepository 我得到错误,我可以在没有@query的情况下这样做吗?我可以用@onetomany做这个吗?如何在Jpa OneTomany上实现select?我想得到没有帖子的所有用户。