如何在hibernate映射中添加另一个搜索参数



我刚开始冬眠,仍在学习基础知识。如果有人能为我指明正确的方向,我将不胜感激。

我有一门课:

目的地

  • id
  • 名称
  • 经度
  • 纬度

我可以用这样的东西读取基于id的目的地:

List result = session.createQuery("from Destination as d where d.id=2").list();

不过,我想使用名称从数据库中读取目的地。我也许可以写这样的东西作为一个查询:

String name;  // name set somewhere else, say a function argument
List result = session.createQuery("from Destination as d where d.name LIKE %"+name).list();

我相信这将产生所有名称与(变量)name相似的目的地。

hibernate中是否有针对此类用例的内置功能,或者是否有更好的方法来处理此问题?

编辑:在我的思考过程中,有一件事是:目标数据库表上的name列将有一个索引设置。我可以使用hibernate以某种方式将此索引映射到Destination类吗?

您可以通过串联字符串来构建查询。一个更优雅的解决方案是使用Hibernate Criteria API。

然后你的查询会看起来像:

List result = session.createCriteria(Destination.class)
                  .add(Restrictions.like("name", "%" + name)
                  .list();

最新更新