Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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/7/arduino/2.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
JPA标准API查询中的字符串_Jpa_Criteria Api - Fatal编程技术网

JPA标准API查询中的字符串

JPA标准API查询中的字符串,jpa,criteria-api,Jpa,Criteria Api,我有一个关于比较字符串值(它是作为nvarchar存储在db中的一个数字)和JPA标准API中的一个数字的问题。有没有可能这样做?我试过使用method.as(Class),但没有成功。它总是比较两个字符串,而不是两个数字 编辑: 我在表中有一列(名称->字段值)。它存储数字,但采用文本格式nvarchar。我想在JPA CriteriaApi中做一个谓词,它给我这个表中的行,其中fieldValue大于某个值。我试过: criteriaBuilder.gt(c.get("fieldValue"

我有一个关于比较字符串值(它是作为nvarchar存储在db中的一个数字)和JPA标准API中的一个数字的问题。有没有可能这样做?我试过使用method.as(Class),但没有成功。它总是比较两个字符串,而不是两个数字

编辑:

我在表中有一列(名称->字段值)。它存储数字,但采用文本格式nvarchar。我想在JPA CriteriaApi中做一个谓词,它给我这个表中的行,其中fieldValue大于某个值。我试过:

criteriaBuilder.gt(c.get("fieldValue").as(Long.class), someValue);

但是id不起作用

一种可能是使用
转换器
类对属性进行注释。这样,Java
实体
字段是一个
,而数据库列是一个
字符串

@Converter
public class LongToStringConverter implements AttributeConverter<Long,String> {
    @Override
    public String convertToDatabaseColumn(Long attribute) {
        return attribute.toString();
    }
    @Override
    public Long convertToEntityAttribute(String dbData) {
        return Long.parseLong(dbData);
    }
}
“它不起作用”。这告诉人们很多。从来没有想过他们想知道生成了什么SQL,或者您遇到了什么异常?
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Entity> q = cb.createQuery(Entity.class);
Root<Entity> l = q.from(Entity.class);
q.select(l).where(cb.equal(l.get("fieldValue"), 12344321L));
Entity r = em.createQuery(q).getSingleResult();
System.out.println(r);