我有一个实体,我想使用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;
}
根据documentation,我应该能够通过定义方法名称来检索第一个结果,如下所示:
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”
将结果类型更改为List也不起作用。
如何将限制与条件相结合?
注意:我面临的问题是Hibernate需要2个参数,一个限制和一个条件。但条件被解释为限制。