tru*_*ian 10 java spring jpa kotlin
我有一个自定义存储库,声明如下(用 Kotlin 编写):
interface FooRepository : JpaRepository<Foo, Int> {
fun findByFoo(foo: String): List<Foo>
fun findByBar(bar: String): List<Foo> {
//custom implementation
}
}
data class Foo(var id: Int, var foo: String, var bar: String)
Run Code Online (Sandbox Code Playgroud)
这两种方法都满足 JPA 存储库的命名约定,但我想FooRepository.findByBar
自己实现第二种方法 ( )。如何防止 JPA 为其创建查询?
请注意,我的自定义实现涉及计算逻辑,因此@Query
允许自定义查询的注释不满足我的要求。
此外,在实际情况下,这样做是必要且合理的,因此如果您试图建议“更好”的设计模式(例如将实现放在服务层等),请不要发布您的答案或评论。
小智 0
您可以简单地创建另一个接口(例如)FooRepositoryCustom
,并为该接口创建一个实现类(FooRepositoryCustomImpl
),然后在该类上进行实现FooRepositoryCustomImpl
并将该FooRepositoryCustom
接口扩展为您的FooRepository
接口。
FooRepositoryCustom
:
public interface FooRepositoryCustom {
fun findByBar(bar: String): List<Foo>;
}
Run Code Online (Sandbox Code Playgroud)
FooRepositoryCustomImpl
:
public class FooRepositoryCustomImpl implements FooRepositoryCustom {
@Override
public fun findByBar(bar: String): List<Foo> {
//your implementation goes here
}
}
Run Code Online (Sandbox Code Playgroud)
FooRepository
:
interface FooRepository : JpaRepository<Foo, Int>, FooRepositoryCustom {
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4348 次 |
最近记录: |