【问题标题】:Spring Data JPA: The data types varchar and varbinary are incompatible in the add operator exception occurs when using concat() methodSpring Data JPA:数据类型 varchar 和 varbinary 不兼容在使用 concat() 方法时发生 add 运算符异常
【发布时间】:2020-11-14 15:07:46
【问题描述】:

在我的 Spring Data 项目中,我尝试对 JPA 查询注释使用 concat 操作(如下所示)

@Query("SELECT a from ApiEnrollmentsView a where (:mrn is null or a.mrn=:mrn) and " +
        " (:firstName is null  or a.firstName like concat(:firstName, '%')) and " +
        " (:lastName is null  or a.lastName like concat(:lastName, '%')) ")
List<ApiEnrollmentsView> findEnrollmentsByMrnAndFirstNameAndLastName(String mrn, String firstName, String lastName);

项目编译正常,但是当我访问该方法时,出现异常data types varchar and varbinary are incompatible in the add operator

例外:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The data types varchar and varbinary are incompatible in the add operator.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:600)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:522)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7225)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3053)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:444)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
    ... 174 more

【问题讨论】:

标签: java sql-server spring-boot spring-data-jpa spring-data


【解决方案1】:

我记得我有完全相同的奇怪错误。正如 cmets 中提到的,问题通过使用 coalesce 函数而不是 concat 来解决。

【讨论】:

  • 这解决了我的问题。但是我向 Spring Data 团队提出了一个关于此的错误报告。你可以在这里关注DATACMNS-1778
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
相关资源
最近更新 更多