首页 > 解决方案 > 实体的所有存储库方法上的隐藏和静态过滤器

问题描述

免责声明:请不要建议重新设计数据库模型/数据库模型概念缺陷。这个问题是关于所描述的情况,没有办法改变这种情况。


假设我有一张桌子fruits,有namecolortype作为字段这意味着,所有的苹果都有type=apple,所有的橙子都有type=orange,依此类推。

现在创建一个名为的 JPA 实体/模型Apple现在创建一个使用映射的 3 个字段Table=fruits,我想创建一个AppleRepository参数type被静态设置为apple且外部消费者不可见的位置。

所以我不想提供

AppleRepository.findByTypeAndNameContains要求调用者现在设置typeapple

而只是

AppleRepository.findByNameContains而类型静态设置为apple.

Orange(使用相同的方法,然后我会选择OrangeRepository使用type=orange

我知道我可以使用@Query用来编写一个自定义查询,其中类型只是静态包含并且只映射动态参数......但是

问题:有没有一种优雅的方法可以在不使用的情况下实现它@Query

标签: springspring-data-jpa

解决方案


您所拥有的是“单表”继承策略背后的原理。它包括将所有实体存储在单个表内的层次结构中,并使用鉴别器列(即您的类型列)区分它们。

有关详细信息,请参阅文档


推荐阅读