java - Hibernate 时间戳搜索查询返回空列表

标签 java hibernate lucene hibernate-search hibernate-query

我正在使用 Hibernate 开发 Spring Boot 项目,并尝试从 SQL 数据库映射时间戳。针对字符串或数字的其他查询工作正常,因此问题不应该是项目结构本身。

我的 User.java 类的片段:

@Indexed
@Entity

public class User {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Integer id;

  @Field
  @Basic
  private java.sql.Timestamp datum;

  public java.sql.Timestamp getDatum() {
    return datum;
  }
}

我的搜索服务片段:

FullTextEntityManager fullTextEntityManager =
    org.hibernate.search.jpa.Search.
    getFullTextEntityManager(entityManager);

QueryBuilder queryBuilder =
    fullTextEntityManager.getSearchFactory()
    .buildQueryBuilder().forEntity(User.class).get();

org.apache.lucene.search.Query query =
        queryBuilder.range().onField("datum")
          .below(java.sql.Timestamp.valueOf("1980-02-01 11:02:20.000")).createQuery();

org.hibernate.search.jpa.FullTextQuery jpaQuery =
    fullTextEntityManager.createFullTextQuery(query, User.class);

@SuppressWarnings("unchecked")
List<User> results = (List<User>) jpaQuery.getResultList();

return results;

最佳答案

你可以只使用SpringJPA吗?

所以它只是一个接口(interface)

@Repository
public interface YourModelRepository extends JpaRepository<YourModel, Integer>{
        List<YourModel> findByDatumGreaterThan(LocalDatetime datum);
}

让 JPA 的接口(interface)来处理它。

这是spring jpa reference sheet .

关于java - Hibernate 时间戳搜索查询返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54645830/

相关文章:

java - Janino scriptella 与数组 List 的使用

java - 迷宫算法的数组未存储正确的值

hibernate - 如何仅检索 JPQL 或 HQL 中实体的某些字段? JPQL 或 HQL 中 ResultSet 的等价物是什么?

lucene - Solr检索未存储字段的值

java - hibernate 搜索@IndexedEmbedded

java - 带有特殊字符的 HttpResponse

java - 从 yaml 文件中过滤属性

java - Hibernate 实体上的 SpEL

java - 错误: ORA-02289: sequence does not exist in hibernate

java - 使用 SortedSetDocValuesField 对多个字段进行排序 - 错误 : unexpected docvalues type SORTED_SET for field