Spring Data JPA限制查询结果抛出NumberFormatException

时间:2018-05-23 09:30:31

标签: java spring spring-data-jpa

我有一个实体,我想使用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个参数,一个限制和一个条件。但条件被解释为限制。

0 个答案:

没有答案