免责声明:请不要建议数据库模型重新设计/数据库模型概念存在缺陷。这个问题与所描述的情况有关,无法适当地更改该情况。
假设我有一个表fruits
,其中name
,color
和type
作为字段
这意味着,所有苹果都有type=apple
,所有橘子都有type=orange
,依此类推。
现在使用映射的这3个字段和Apple
创建一个名为Table=fruits
的JPA实体/模型,我想创建一个AppleRepository
,其中参数type
是静态设置的到apple
,外部消费者看不到。
所以我不要提供
AppleRepository.findByTypeAndNameContains
,要求呼叫者现在将type
设置为apple
但只是
AppleRepository.findByNameContains
,而类型静态设置为apple
。
(然后使用相同的方法,我选择Orange
,然后选择OrangeRepository
使用type=orange
)
我了解我可以使用@Query
编写一个自定义查询,其中类型只是静态包含的,并且仅映射动态参数...但是
问题:
有没有不用@Query
来实现的优雅方法?
答案 0 :(得分:2)
您所拥有的是“单一表”继承策略背后的原理。它包括将所有实体按层次结构存储在单个表中,并使用区分符列(即您的类型列)对其进行区分。
有关详情,请参见the documentation