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

时间:2012-01-28 07:18:44

标签: java hibernate orm hibernate-mapping

我是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内置的内容,还是有更好的方法来处理这个问题?

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

1 个答案:

答案 0 :(得分:1)

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

您的查询将类似于:

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