Hibernate通过少量参数从数据库中查找对象

时间:2014-08-03 12:07:15

标签: spring hibernate

找不到具有少量参数的正确查询。 以下是来自DAO类的查询:

public Notebook findByName(String name, Integer UserId) {
        return (Notebook) sessionFactory.getCurrentSession().createQuery("from Notebook where ....");
    }

我想通过几个参数获取Notebook的查询对象:名称用户ID (外键)。

我想只获得一个对象,即使他只有一个元素,也不是对象列表。

2 个答案:

答案 0 :(得分:1)

方法createQuery(queryString)会返回Query,您可以在其上设置参数,例如

Query query = createQuery("from Notebook where id=:id and title=:title");
query.setParameter("id", id);
query.setParameter("title", title);
query.setMaxResults(1);
query.uniqueResult(); // fetch the object.

如果查询返回的结果多于一个结果,请务必设置setMaxResults(),否则将抛出异常。

答案 1 :(得分:0)

第一

编辑

public Notebook findByName(String name, Integer UserId) {
        return (Notebook) ....createQuery("from Notebook where ....")...uniqueResult;
    }

BTW:我没有包括您为查询设置参数的部分

如果没有唯一结果,uniqueResult会抛出异常。

请确保您的查询语句非常具体,并且您包含的内容如 master.pk = child.fk (其中pk应为fk)

你可以更新并包含完整的查询语句吗?