我知道,存储库接口需要将域类型及其标识符类型指定为通用参数。但是,我尚不清楚“命中型限制”一词。
如果存储库中声明的ID类型不匹配我的域对象中名为“ ID”的属性的类型,则我将遇到编译时类型不匹配或运行时错误?在这种情况下,“类型限制”到底是什么?它与Java的通用类型系统的局限性有关,还是指其他约束? 相关文档
标准
CrudRepository
SomeType findBySomeProperty(ID id)
there
SomeType
可以是T
,
Optional<T>
,
List<T>
,还有更多,并且是您实体的某些属性。现在,您定义了一个域模型,其中您的属性为,它不是实体的
id。Query推导对
someProperty
都无法使用,因为它已经被声明与实际的ID一起工作,无论其命名如何。
您可以做的就是创建自己的
id
使用findById
注释。
但是,如果您执行此操作,并且ID属性与您的
findById
属性不同(或您的自定义@Query
应返回与id
findById
的类型不同)
a)与您打算的一个不同。
B)代码不编译,因为类型会导致无法接受的方法的过载/覆盖的变体。