许多映射方法中有什么区别



我想要许多与明确的联接表的关系映射。

我的Java Spring Project以HAL格式提供REST API,现在只有两种类型的分类:

  • 定义的实体和
  • "空心"互动库(由@repositoryrestresource注释(。

sidenote,依赖关系大约是这些:

spring-boot-starter-parent
spring-boot-starter-data-jpa
spring-boot-starter-data-rest
spring-data-rest-hal-browser
postgresql / h2
spring-boot-starter-hateoas

表之间的关系(我的意思是_ link rest资源。请查看示例hal json文档并查找ea:basket。自动配置和其他魔术包括。

我现在在添加许多新依赖性时正在挣扎。

我有实体A,B和标签。我希望有许多与A B实体关联的标签实体。我不需要在A和B实体中有任何列表/设置(如果我需要的话,我将使用JOOQ(。

第一个问题/问题:

我看到至少三种方法将许多与许多关系建模与明确的联接表(以对我的关联需求建模(,并且我不知道差异。这些方法有什么区别?

  1. 如VLAD所建议,在JOIN表中使用可嵌入的复合键?https://vladmihalcea.com/the-best-way-way-to-to-map-a-many-to-many-association-with-extra-columns-when-rising-jpa-and-hibernate/
  2. 使用@idclass方法如下所述:https://stackoverflow.com/a/3588400/11152683
  3. 在加入表中使用多个@ID,如下所示:https://hellokoding.com/jpa-many-to-many-extra-columns-reclations-reclationship-mappy-mappy-example-example-with-spring-spring-boot-hsql/

第二个问题:在我的情况下,需要采取什么方法来轻松建模关联并使魔术粉在CRUD存储库中提供HAL格式时可以进行工作。我的意思是,关系的链接将自动生成。

使许多2个经济的关联与春季数据休息的事物很好地工作,并为HAL表示正确的内容,您首先了解了一些JPA/Hibernate。有两种方法(提出问题1和2,因为第三种仅是第二种方法,仅在冬眠中工作。(。

这两种方法都在标签分支的概念存储库证明中显示。我使用给定存储库来测试项目的各种设置。

方法1,Embeddidid 。它确实在BackendIdConverter Bean中使用fixConfig类中的hackish Thing,它使用BookRepository在解析URL请求ID上的BookRepository获取book entity。

方法2,IDCLASS 。它使用普通整数int indclass,并且似乎是正确的解决方案。

我认为可以修改第一种方法以与第二种方法相似,但是我现在无法做到。

我将标记为解决方案的任何答案,以提供"为什么"这样的见解。

最新更新