Java 我在通过Hibernate搜索从数据库中获取精确值时遇到问题

Java 我在通过Hibernate搜索从数据库中获取精确值时遇到问题,java,hibernate,Java,Hibernate,我想通过Hibernate搜索并获取表中的字段,这些字段等于搜索参数的值,而不是像它这样搜索 我有一个要搜索的字段 @Field(name = "field", analyzer = @Analyzer(definition = "whitespaceAnalyzer")) private String field; 我通过创建这个查询来搜索它 queryBuilder.keyword().onField("field").matching("value").createQuery() 但它

我想通过Hibernate搜索并获取表中的字段,这些字段等于搜索参数的值,而不是像它这样搜索

我有一个要搜索的字段

@Field(name = "field", analyzer = @Analyzer(definition = "whitespaceAnalyzer"))
private String field;
我通过创建这个查询来搜索它

queryBuilder.keyword().onField("field").matching("value").createQuery()
但它通过不相等的like运算符进行搜索 我知道如果我写

@Field(name = "field", analyzer = Analyze.NO)
它将工作,但我想让
@Field
以这种方式进行注释,并通过相等运算符搜索字段。在我的情况下,我如何才能做到这一点。

您可以利用

javax.persistence.criteria.CriteriaBuilder

CriteriaBuilder-CriteriaBuilder=entityDAO.getCriteriaBuilder();
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery(字段\ className.class);
根实体=criteriaQuery.from(字段\u className.class);
其中(criteriaBuilder.equal(entity.get(“field”),标识符));
Field_className=(Field_className)entityDAO.createQuery(criteriaQuery).getSingleResult();

请注意用您的类名替换
Field\u className

谢谢您的回答,但我不能在我的项目中使用CriteriaBuilder。是否有其他解决方案。通过FullTextEntityManager设置分析==否
    CriteriaBuilder criteriaBuilder = entityDAO.getCriteriaBuilder();
    CriteriaQuery<?> criteriaQuery = criteriaBuilder.createQuery(Field_className.class);

    Root<Field_className> entity = criteriaQuery.from(Field_className.class);
    criteriaQuery.where(criteriaBuilder.equal(entity.get("field"),identifier));
    Field_className = (Field_className)entityDAO.createQuery(criteriaQuery).getSingleResult();