I want to make every param optional in doing so, I am facing an issue getting the error
{
"error": "Internal Server Error",
"code": 500,
"message": "class java.util.ArrayList cannot be cast to class java.util.UUID (java.util.ArrayList and java.util.UUID are in module java.base of loader 'bootstrap')",
"date": "2024-07-04T12:32:17.918319100Z"
}
- AlertHeader’s primary key is a UUID, I have to pass list of alertIds and fetch those records and also each param is optional so making the null checks.
- Problem here is if I just use a.alertId in :alertIds in the where clause query works fine but adding the null clause is failing for valid alertId passed.
- null case for alertId works fine tested and verified.
public interface AlertHeaderRepository extends JpaRepository<AlertHeader, UUID> {
@Query("SELECT a FROM AlertHeader a WHERE " +
"(COALESCE(:alertIds, NULL) IS NULL or a.alertId IN :alertIds) AND" +
"(cast(:createdAt as timestamp) IS NULL OR a.createdAt >= :createdAt) AND " +
"(cast(:lastUpdatedAt as timestamp) IS NULL OR a.lastUpdatedAt <= :lastUpdatedAt) AND " +
"(cast(:readyTime as timestamp) IS NULL or a.readyTime = :readyTime)")
List<AlertHeader> findAlertsByDateRangeAndReadyTime(
@Param("alertIds") List<UUID> alertIds,
@Param("createdAt") Instant createdAt,
@Param("lastUpdatedAt") Instant lastUpdatedAt,
@Param("readyTime") Instant readyTime);
}
How fix this issue?