我是Spring Boot的新手。我正在实现微服务架构。 我有两个实体驾驶员和汽车。驾驶员与汽车之间存在一对一的关系。一位驾驶员只能选择一辆汽车,而一位驾驶员只能选择一辆汽车。
我想实现高级搜索功能。应该可以通过驾驶员的属性(用户名,online_status)以及汽车特性(驾照编号,汽车名称等)来搜索驾驶员。我正在将数据库用作H2(在内存中)。我要避免嵌套if和else。
在Spring Boot中执行此操作的最佳方法是什么?
答案 0 :(得分:0)
我认为最好的方法是在代码中启用hibernate-search模块。为此,您可以使用索引和字段注释。
下面的示例
@Entity
@Indexed
public class Car {
@Column(name = "name")
@Field
private String name;
@Column(name = "license_number")
@Field
private Integer licenseNumber;
}
然后,您可以在服务层中使用搜索功能
@Service
public class CarServiceImpl implements CarService {
@PersistenceContext
private EntityManager entityManager;
@Override
@Transactional
public List<Car> search(Sting name, String licenseNumber) {
FullTextSearchBuilder builder = new FullTextSearchBuilder(entityManager, Car.class);
builder.appendAndQuery(name, "name");
builder.appendAndQuery(licenseNumber, "licenseNumber");
FullTextQuery fullTextQuery = builder.createFullTextQuery();
return (List<Car>) fullTextQuery.getResultList();
}
}