当前位置: 首页 > 知识库问答 >
问题:

如何用jpa/hibernate为实体映射字段定义索引?

长孙阳嘉
2023-03-14

我有一个实体,它有一个Map ElementCollection字段。我知道使用Jpa,您可以在类级别上使用@Index注释为常规字段定义索引。问题是我的地图元素集合字段创建了一个不是由@Entity注释类创建的连接表。所以我不能使用@Index注释。有没有Jpa/Hibernate方法来定义这个连接表中字段的索引,或者我必须手动定义它们?这是地图字段。

@ElementCollection
@MapKeyJoinColumn(name = "language_id")
@CollectionTable(name="language_plantTypeNameTranslations",
        joinColumns=@JoinColumn(name="plantTypeNameTranslations_id"))
private Map<Language, String> plantTypeNameTranslations;

谢谢

共有1个答案

芮星海
2023-03-14

@CollectionTable有一个索引属性,其工作方式与 可以。

作为补充说明,我会认真考虑切换到Liquibase或Flyway这样的数据库版本控制工具,尤其是索引之类的工具。索引实际上不是数据模型的一部分,它们也随着数据库中数据的质量、数量和查询要求的变化而变化。使用源代码注释管理它们会使它们变得非常不灵活。

 类似资料:
  • 我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到Spring Boot中的实体。 我刚才的例子列出了一个静态数字,但我打算将来也将其用于聚合。 我在尝试运行查询时不断收到以下消息: “类[Ljava.lang.Object;不能强制转换为类com.School([Ljava.lang.Object;位于加载器“bootstrap”的模块java.base中;com.School位于加

  • 我有EntityA和EntityB,它们具有一个从EntityA->EntityB的OneToMany关系。我想将EntityB作为属性包含到EntityA中。 另一种解决方法是在方法中获取并设置该属性,但我的目标是在entity类中找到一个解决方案。有人有主意吗?谢谢

  • 快速总结我想要实现的目标。请给出实施或设计建议:) 我有两个表:用户,图像。在UserDO中,我希望保留一组所有用户的图像,以及单个图像,即用户的肖像(在我的示例中,该组将包括肖像): 在ImageDO中,我有一个userid作为外键来记录哪个用户上传了图像。但是它没有布尔值,因为认为一个用户可能会上传许多图像,但只有一个是肖像。 有什么方法可以实现这一点吗?或者我需要维护另一个表(例如,Port

  • 我希望以以下方式映射实体: 我有一个用户,他买了一辆车(特定的品牌、型号和变体)。 为此,我创建了以下类。 Car.java汽车 CarModel.java 汽车变体.java 最后,用户.java 现在,我的问题是。 在现实生活中,用户可能拥有许多汽车,每辆汽车都有特定的品牌、型号和变体。我想用JPA / Hibernate实现这样的功能。 我可以定义与和的关系。在这种情况下,如果我执行或我最终

  • 我在Kotlin-vertx项目中配置了Hibernate,我设法设置了所有内容,但当我运行HQL查询时,它会输出: 提前谢了。

  • 问题内容: 我想用Hibernate映射超类中的通用字段。 我的母亲班是: 一个子类: 如您所见,我将覆盖value字段以指定要在数据库中使用的列。我的表ParameterValue由几列组成,每种类型对应一列。 但是hibernate抱怨: 好的,但是超类中getValue的良好配置是什么?(我在“需要帮助的地方”发表了评论) 问题答案: 我很确定您不能将单个Java属性映射到三个不同的列。您将