У меня есть объект, для которого я хотел бы использовать JpaRepository
@Entity
@Table(name = "MESSAGE")
public class MessageEntity {
@Id
@Column(name = "ID")
private Long id;
@Column(name = "TRACE_ID", nullable = false)
private String traceId;
@Column(name = "REGISTRATION", nullable = false)
private LocalDateTime registration;
}
В соответствии с документацией я должен иметь возможность получить первый результат, определив методНазовите его следующим образом:
public interface MessageJpaRepository extends JpaRepository<MessageEntity, Long> {
MessageEntity getFirstByOrderByRegistrationDesc();
}
... и это работает.
Однако, когда я добавляю условие для фильтрации по параметру, выдается NumberFormatException
.
public interface MessageJpaRepository extends JpaRepository<MessageEntity, Long> {
// (OrderBy removed for simplicity)
MessageEntity getFirstByTraceId(String traceId);
MessageEntity getFirst1ByTraceId(String traceId);
}
Когда я вызываю этот метод с помощью messageJpaRepository.getFirstByTraceId("trace.id")
, выводится следующее:
select TOP ?
message0_.ID as ID1_0_,
message0_.TRACE_ID as TRACE_ID2_0_,
message0_.REGISTRATION_TIMESTAMP as REGISTRA3_0_
from Message message0_
where message0_.TRACE_ID = ?
параметр привязки 1 как [VARCHAR] - [trace.id]
Причина: org.h2.jdbc.JdbcSQLException: преобразование данныхошибка преобразования "trace.id";Оператор SQL:
Причина: java.lang.NumberFormatException: Для входной строки: "trace.id"
Изменение типа результата на Список также не работает.
Как объединить лимит с условием?
Примечание: Проблема, с которой я сталкиваюсь, заключается в том, что Hibernate ожидает 2 параметра:предел и условие.Но условие интерпретируется как предел.