Hibernate 带三个单引号的NativeQuery
由于三个引号,我的查询失败。这可能是另一个原因,但据我所知,这是由三个引语引起的。我似乎想不出解决这个问题的办法,我需要额外的帮助。我尝试过逃跑和其他一切,但似乎无法解决问题 我使用的是Spring数据JPAHibernate 带三个单引号的NativeQuery,hibernate,jpa,spring-boot,spring-data-jpa,Hibernate,Jpa,Spring Boot,Spring Data Jpa,由于三个引号,我的查询失败。这可能是另一个原因,但据我所知,这是由三个引语引起的。我似乎想不出解决这个问题的办法,我需要额外的帮助。我尝试过逃跑和其他一切,但似乎无法解决问题 我使用的是Spring数据JPA @Query(value = "SELECT f FROM Fragrance f WHERE REPLACE(REPLACE(f.name, ' &', ''), '' ', '') = ?1" , nativeQuery = true) Fragrance findByName
@Query(value = "SELECT f FROM Fragrance f WHERE REPLACE(REPLACE(f.name, ' &', ''), '' ', '') = ?1" , nativeQuery = true)
Fragrance findByNameIgnoreSpecialCharacters(String name);
错误
我无法在任何数据库上运行指定的本机查询,因此难怪Hibernate发现它的格式不正确 指定查询
此查询中有两个错误。第一个错误是
SELECT f FROM flanger f…
要求flanger
表中必须有一个名为f
的列,但可能没有。请记住,这是一个本机查询,而不是JPA查询。因此,正确的查询应该以SELECT*FROM flanger…
开头
第二个错误是''
对于查询来说是无效文本<代码>“表示单引号字符(”
)。因此,本文的开头不正确。正确的文本应该是''''
正确查询
可在Github上获得
java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:502) ~[hibernate-entitymanager-5.0.11.Final.jar:5.0.11.Final]
SELECT
f
FROM
Fragrance f
WHERE
REPLACE(REPLACE(f.name, ' &', ''), '' ', '') = ?1
SELECT
*
FROM
Fragrance
WHERE
REPLACE(REPLACE(name, ' &', ''), ''' ', '') = ?1