Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 添加运算符中的数据类型varchar和ntext与hibernate不兼容_Mysql_Sql_Hibernate - Fatal编程技术网

Mysql 添加运算符中的数据类型varchar和ntext与hibernate不兼容

Mysql 添加运算符中的数据类型varchar和ntext与hibernate不兼容,mysql,sql,hibernate,Mysql,Sql,Hibernate,我将以下内容作为查询的一部分 nameQuery = " AND (lower(templateInformation.name) LIKE lower('%' || :name || '%'))"; 当只有此名称参数超过4001个字符时,它将引发以下异常 Caused by: se.cambio.platform.sdk.common.service.ServiceException: org.hibernate.exception.GenericJDBCException: could n

我将以下内容作为查询的一部分

nameQuery = " AND (lower(templateInformation.name) LIKE lower('%' || :name || '%'))";
当只有此名称参数超过4001个字符时,它将引发以下异常

Caused by: se.cambio.platform.sdk.common.service.ServiceException: org.hibernate.exception.GenericJDBCException: could not extract ResultSet [at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert():54], Caused by: java.sql.SQLException: The data types varchar and ntext are incompatible in the add operator. [at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic():372]
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2886)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2328)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:638)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:506)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:979)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815)
at org.hibernate.loader.Loader.doQuery(Loader.java:899)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
at org.hibernate.loader.Loader.doList(Loader.java:2522)
at org.hibernate.loader.Loader.doList(Loader.java:2508)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338)
at org.hibernate.loader.Loader.list(Loader.java:2333)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1269)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
我发现这可以解释为什么这种情况普遍发生。但在我的例子中,如果name参数的字符数小于或等于4001,则不会有任何问题。表列类型为nvarchar(255)。 有人能解释一下这种情况吗

您需要使用函数来连接MySQL中的字符串

返回连接参数后产生的字符串。也许 有一个或多个论点


你能详细说明一下吗?我应该连接什么?我认为您的问题存在于“LIKE lower('%'):name |'%'),您将“%”和name变量以及结尾“%”连接在一起,我将代码更改为“LIKE lower(concat('%,:name,'%')”),但它仍然引发相同的异常。有什么想法吗?