9

我有一个使用复合键的数据库。是否可以使用 spring-data-jdbc?我尝试了里程碑版本 1.1M2,其中我以以下方式映射了我的实体:

class History {

   @ID
   @Embedded
   private CompositeHistoryID  id;
}

然后在我的存储库类中,我添加了

HistoryRepository extends Repository<History,CompositeHistoryID  >{
   History  findByhId(CompositeHistoryID  id)
}

我跟踪了SQL,它没有工作。嵌入部分有效,但 where 子句不正确。它使用单个参数保持器,而不是使用常规的复合键结构,其中 element1=subkey1 和 element2=subkey2 等等......

我有两个问题。有什么方法可以使复合 ID 工作?

第二个问题是,假设我在 SAVE 方法的基础@Query上使用了一个自定义findByID,如果之后,SAVE 方法会起作用吗?什么是根本没有ID,如果我只是随机选择一个列并说你将成为我的ID怎么办?

4

1 回答 1

8

No@Embedded不适用于 Id,. 现在所有的 SQL 语句都为 id 列假设一个简单的值。而且我认为没有解决方法。

一种可行的解决方法是创建一个视图,将复合键显示为单个字段,并具有将正确数据写入基础表的触发器。

于 2019-04-05T05:57:24.547 回答