我是hibernate的新手我希望你们能解决我的小问题。 我希望将一个值作为值返回,而不是作为数据库中的List返回。我正在使用hibernate,但我不知道该怎么做,这是我到目前为止所做的:
这个主题:Hibernate Return integer value并没有真正帮助我,因为我不使用会话,而query.uniqueResult()对我来说不起作用,因为它不会识别方法uniqueResult(),你我可以在下面的考试中看到我正在使用的库/类/方法。
import java.sql.*;
import org.hibernate.*;
import org.hibernate.criterion.*;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class Persistence
{
public void RegisterWorkHours(TimeRegistration object)
{
EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("timereg");
EntityManager em = emf.createEntityManager();
String q = "SELECT id FROM tbl_employee WHERE bsn = @bsn";
Query query = em.createQuery(q);
query.setParameter("@bsn", object.getEmployee().getBsn());
//And here I want to have a single value being returned as a value and not as a List.
em.getTransaction().begin();
em.persist(object);
em.getTransaction().commit();
em.close();
}
}
问题定义: 问题是我在Employee类中定义了id并且auto_incremented。但我没有设置它,因为我不希望用户被迫输入该用户的唯一ID。但我确实希望能够从employee表中获取id,其中bsn等于来自对象的给定bsn值,以便我可以注册某个员工(id)在某个项目(id)上工作的小时数。
答案 0 :(得分:2)
uniqueResult()
接口上没有javax.persistence.Query
方法(这是您的代码正在使用的方法)。要获得单个结果,请使用getFirstResult()
或getSingleResult()
。但请注意,由于这些原因,两者都不是特别有用:
getUniqueResult()
期望返回查询
完全 一个项目,如果返回的集合为空,或者有多个条目,则会抛出异常。如果您的bsn
值非常独特,请使用getUniqueResult()
,但如果不是,那么您需要重新审视您的设计。