Spring-JPA@Query与JPQL和MySQL函数CONVERT(col使用字符集)

Spring-JPA@Query与JPQL和MySQL函数CONVERT(col使用字符集),mysql,spring-data-jpa,jpql,spring-el,Mysql,Spring Data Jpa,Jpql,Spring El,我有两个具有不同字符集UTF8(表a)和latin1(表b)的MySQL表,我想将以下本机查询转换为JPQL(JPA2.1): 我尝试了下面的表达,但都错了: @Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id USING latin) = b.aId") @Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', 'a.id USING

我有两个具有不同字符集UTF8(表a)和latin1(表b)的MySQL表,我想将以下本机查询转换为JPQL(JPA2.1):

我尝试了下面的表达,但都错了:

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id USING latin) = b.aId")

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', 'a.id USING latin') = b.aId")

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id, 'USING latin') = b.aId")

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id 'USING latin') = b.aId")

有没有一种方法可以将MySQL转换函数与JPQL一起使用?

我认为JPQL不允许使用
函数
转换
关键字,但您可以将
nativeQuery=true
添加到
@Query
以使用本机MySQL函数
@Query(“从tableA中选择一个,tableB中的函数('CONVERT',a.id使用拉丁语)=b.aId”,nativeQuery=true)
我刚刚读到,如果您使用的是vanilla JPQL和Hibernate,那么您共享的链接将起作用。但是,如果您使用的是SpringData,添加
nativeQuery=true
将解决此问题。看见通过使用
nativeQuery
,您可以使用基本SQL查询。非常感谢您抽出时间,但我需要使用JPQL来简化字段映射。TableA是一个非常复杂的POJO,我给出的示例对实际查询进行了极大的简化。我将尝试使用条件。@darkmnemic它在nativeQuery=true时运行良好。非常感谢。
@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id USING latin) = b.aId")

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', 'a.id USING latin') = b.aId")

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id, 'USING latin') = b.aId")

@Query("SELECT a FROM tableA a, tableB WHERE FUNCTION('CONVERT', a.id 'USING latin') = b.aId")