Skip to content

Commit

Permalink
fix: silently ignores exception when parameter setting to count query
Browse files Browse the repository at this point in the history
  • Loading branch information
bagger3025 committed Oct 11, 2024
1 parent e6a4209 commit 13f5e17
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package com.linecorp.kotlinjdsl.support.spring.data.jpa.javax

import com.linecorp.kotlinjdsl.querymodel.jpql.JpqlQuery
import com.linecorp.kotlinjdsl.render.RenderContext
import org.slf4j.LoggerFactory
import org.springframework.data.domain.Sort
import org.springframework.data.jpa.repository.query.QueryEnhancerFactoryAdaptor
import javax.persistence.EntityManager
Expand Down Expand Up @@ -71,7 +72,17 @@ internal object JpqlEntityManagerUtils {
createQuery(entityManager, queryEnhancer.applySorting(sort), rendered.params, returnType.java),
) {
// Lazy
createQuery(entityManager, queryEnhancer.createCountQueryFor(), rendered.params, Long::class.javaObjectType)
createCountQuery(entityManager, queryEnhancer.createCountQueryFor(), rendered.params)
}
}

private fun createCountQuery(
entityManager: EntityManager,
query: String,
queryParams: Map<String, Any?>,
): TypedQuery<Long> {
return entityManager.createQuery(query, Long::class.javaObjectType).apply {
setCountQueryParams(this, queryParams)
}
}

Expand All @@ -96,9 +107,23 @@ internal object JpqlEntityManagerUtils {
}
}

private fun setCountQueryParams(query: Query, params: Map<String, Any?>) {
params.forEach { (name, value) ->
try {
query.setParameter(name, value)
} catch (e: RuntimeException) {
if (log.isDebugEnabled) {
log.debug("Silently ignoring", e)
}
}
}
}

private fun setParams(query: Query, params: Map<String, Any?>) {
params.forEach { (name, value) ->
query.setParameter(name, value)
}
}
}

private val log = LoggerFactory.getLogger(JpqlEntityManagerUtils::class.java)
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.linecorp.kotlinjdsl.render.RenderContext
import jakarta.persistence.EntityManager
import jakarta.persistence.Query
import jakarta.persistence.TypedQuery
import org.slf4j.LoggerFactory
import org.springframework.data.domain.Sort
import org.springframework.data.jpa.repository.query.QueryEnhancerFactoryAdaptor
import kotlin.reflect.KClass
Expand Down Expand Up @@ -71,7 +72,17 @@ internal object JpqlEntityManagerUtils {
createQuery(entityManager, queryEnhancer.applySorting(sort), rendered.params, returnType.java),
) {
// Lazy
createQuery(entityManager, queryEnhancer.createCountQueryFor(), rendered.params, Long::class.javaObjectType)
createCountQuery(entityManager, queryEnhancer.createCountQueryFor(), rendered.params)
}
}

private fun createCountQuery(
entityManager: EntityManager,
query: String,
queryParams: Map<String, Any?>,
): TypedQuery<Long> {
return entityManager.createQuery(query, Long::class.javaObjectType).apply {
setCountQueryParams(this, queryParams)
}
}

Expand All @@ -96,9 +107,23 @@ internal object JpqlEntityManagerUtils {
}
}

private fun setCountQueryParams(query: Query, params: Map<String, Any?>) {
params.forEach { (name, value) ->
try {
query.setParameter(name, value)
} catch (e: RuntimeException) {
if (log.isDebugEnabled) {
log.debug("Silently ignoring", e)
}
}
}
}

private fun setParams(query: Query, params: Map<String, Any?>) {
params.forEach { (name, value) ->
query.setParameter(name, value)
}
}
}

private val log = LoggerFactory.getLogger(JpqlEntityManagerUtils::class.java)

0 comments on commit 13f5e17

Please sign in to comment.