Java 如何使用JPA搜索字段上的子字符串?

Java 如何使用JPA搜索字段上的子字符串?,java,jpa,Java,Jpa,我的应用程序使用JPA访问后端数据库 我有一个映射到表的Java类。该类有一个字符串字段(称为status),该字段由一系列“0”和“1”组成。我需要根据字段的第二个字符选择一些记录。下面是我不用JPA可以做的事情(我使用的是MS SQLServer) 如何使用JPA实现这一点?JPQL还具有子字符串(..)函数:。因此,它将与本机查询中的相同 当JPA不支持您需要的某些函数时,您可以进行本机查询并将结果映射到pojo。JPA中有一个子字符串函数: 4.6.17.2.1“字符串函数” (……)

我的应用程序使用JPA访问后端数据库

我有一个映射到表的Java类。该类有一个字符串字段(称为status),该字段由一系列“0”和“1”组成。我需要根据字段的第二个字符选择一些记录。下面是我不用JPA可以做的事情(我使用的是MS SQLServer)


如何使用JPA实现这一点?

JPQL还具有
子字符串(..)
函数:。因此,它将与本机查询中的相同


当JPA不支持您需要的某些函数时,您可以进行本机查询并将结果映射到pojo。

JPA中有一个子字符串函数:

4.6.17.2.1“字符串函数”

(……)

子字符串(字符串\主,简单\算术\表达式[,简单\算术\表达式])

(……)

子字符串函数的第二个和第三个参数表示起始位置和 要返回的子字符串的长度。这些参数是整数。 第三个参数是可选的。如果未指定,则子字符串 从字符串的起始位置到结束位置返回。这个 字符串的第一个位置由1表示。子串函数 返回一个字符串


JPQL有一个子字符串函数,可用于修剪实体。确保在查询中使用实体名称,并注意子字符串函数不是零索引的

SELECT * FROM Machines m where SUBSTRING(m.status, 2, 1) = '1'

Bozho,我查看了文档并尝试了子字符串函数,一切都很顺利。谢谢Piotr,我非常感谢你的意见。最好的。
SELECT * FROM Machines m where SUBSTRING(m.status, 2, 1) = '1'