gpt4 book ai didi

mysql - 具有分区 MySQL 表的 Hibernate 映射

转载 作者:可可西里 更新时间:2023-11-01 07:45:22 26 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中(大多数)表在 TENANT_ID 列上分区。每个表还有一个使用 AUTO_INCREMENT 的 ID 字段,因此在所有分区中都是唯一的。数据库主键是一个组合(ID,TENANT_ID),因为MySQL要求主键有分区列部分。

在我的 Java 代码中,我只映射了带有 @Id 注释的 ID 列。这主要是为了避免 Hibernate 中围绕复合键的许多问题。我现在面临的问题是,Hibernate 生成的大多数 SQL 语句只使用 ID 列。例如,由 Hibernate 生成的 UPDATE 语句将读作

UPDATE object SET value = ? WHERE ID = ?

但是,由于此查询排除了 TENANT_ID 上的任何谓词,因此它没有充分利用分区,并且需要扫描每个分区直到找到 ID。我希望生成的查询产生:

UPDATE object SET value = ? WHERE ID = ? AND TENANT_ID = ?

我的问题是是否有一种简单的方法可以做到这一点而不必诉诸 JPA 中的复合键,因为我知道很多人不鼓励使用它们。

最佳答案

您可以使用嵌入式实体,例如包含 id 和 EntityId 的 ObjectPK。而不是使用 @EmbeddedId 从对象实体中引用它。

关于mysql - 具有分区 MySQL 表的 Hibernate 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com