当前位置: 首页 > 知识库问答 >
问题:

具有复杂可空对象的JPA@Query

沈自珍
2023-03-14

我正在用getall查询构建一个存储库,该查询使用一个复杂的类型参数进行筛选,如下所示:

@Query("""
    SELECT c FROM City c
    WHERE :filter IS NULL OR c.code LIKE %:#{#filter.code}%
    """)
fun getAllCitiesFiltered(@Param("filter") filter: MyFilter?) : List<City>

MyFilter类是一个简单的POJO:

class MyFilter {
    var code: String? = null
    var description: String? = null
}
    null
val city = QCity.city
var query = JPAQuery<City>(entityManager).from(city)

if (filter?.code != null)
    query = query.where(city.code.eq("BH"))

if (filter?.description != null)
    query = query.where(city.description.eq("Belo Horizonte"))

谢了!

共有1个答案

拓拔德馨
2023-03-14

最好的方法是使用接口默认方法:

interface CityJpaRepository : JpaRepository<City, Int> {
  fun findByCodeLike(code: String) : List<City>

  fun findByFilter(filter: MyFilter?) : List<City> {
    return filter?.code?.let { findByCodeLike(it.code) } ?: findAll()
  }
}
 类似资料:
  • 模板实体: 工作流实体: 指挥实体:

  • 我在oracle数据库中有一个包含客户数据的表。以下是一个简化的定义: 此表的主键是。 该表有许多行,其中为空。在数据库级别,没有问题,但是当我试图通过JPA实体访问这些行时,会导致一些问题: 1:使用

  • 问题内容: 我有以下json对象: 以下几行工作正常: 但是,如果键有空格,那么我将无法访问它们的值,例如 如何访问键名带有空格的值?可能吗 问题答案: 做到这一点的方法是通过括号表示。

  • 在调试中,我得到visitreport.size()=27(即正确的记录计数),但是 visit.getValue()对于每行都是空值,尽管每个行的这个字段中没有空值。怎么了?

  • 问题内容: 我有以下情况: 在我的Query.xml中,我以这种方式编写了插入内容: 阅读mybatis结果地图指南后,我尝试在mybatis-config.xml文件中添加以下行: 但我一直收到以下错误: 谁能告诉我该如何设置? 问题答案: 中的属性需要引用结果映射的名称,而不是Java类型: 但是,如果作为单独的表存储在数据库中,则不支持嵌套插入。您将需要在Java中调用两个插入。Result