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

cur*_*us1 5 java jpa

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

我有一个映射到表的Java类.该类有一个字符串字段(称为状态),由一系列"0"和"1"组成.我需要根据字段的第二个字符选择一些记录.这是我可以不使用JPA(我正在使用MS SQLServer).

SELECT * FROM Machines where SUBSTRING(status, 2, 1) = '1'
Run Code Online (Sandbox Code Playgroud)

我怎么能用JPA呢?

Pio*_*cki 9

JPA中有一个SUBSTRING函数:

http://download.oracle.com/otn-pub/jcp/persistence-2.0-fr-eval-oth-JSpec/persistence-2_0-final-spec.pdf

4.6.17.2.1"字符串函数"

(......)

SUBSTRING(string_primary,simple_arithmetic_expression [,simple_arithmetic_expression])

(......)

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


Boz*_*zho 5

SUBSTRING(..)JPQL也有这个功能:参见这里。因此它将与本机查询中的相同。

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