java - 使用 hibernate 返回一个值而不是表中的列表

标签 java hibernate

我是一个 hibernate 新手,我希望你们能帮助我解决我的小问题。 我希望将单个值作为值返回,而不是作为数据库中的列表返回。我正在使用 hibernate,但我不知道该怎么做,这是我到目前为止所得到的:

此主题:Hibernate Return integer value并没有真正帮助我,因为我不使用 session ,并且 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 并自动递增。但我没有设置它,因为我不希望用户被迫输入该用户的唯一 ID。但我确实希望能够从员工表中获取 id,其中 bsn 等于对象中给定的 bsn 值,以便我可以注册某个员工(id)在某个项目(id)上工作的小时数。

最佳答案

javax.persistence.Query 接口(interface)(您的代码正在使用的接口(interface))上没有 uniqueResult() 方法。要获取单个结果,请使用 getFirstResult()getSingleResult()。但请注意,由于以下原因,这两种方法对于您的情况都不是特别有用:

  • 调用 getFirstResult() 将返回数组中的第一个元素 您的查询返回的集合。这可能是也可能不是 您正在寻找的元素。
  • 调用 getUniqueResult() 期望查询返回 恰好一项,如果返回的集合为空或有多个条目,则会抛出异常。

如果您的 bsn 值确实是唯一的,那么请使用 getUniqueResult(),但如果不是,那么您需要重新审视您的设计。

关于java - 使用 hibernate 返回一个值而不是表中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9412739/

相关文章:

java - Hibernate 查询用于从具有路径变量输入的表中选择值

java - 为什么我在尝试执行涉及 2 个表之间联接的 HQL 查询时会获取此 "ErrorCounter - Path expected for join!"?

java - (Java多线程) 多线程中如何传递参数?

java - JNI 中资源 Uri 的文件

java - 每次线程执行它的运行时获取一个值/返回一些东西

Java 项目无法识别从生成的 jar 文件导入

java - 在 liquibase 上用 JSON 内容重构数据库

java - 使用 Spring Jpa 为服务插入语句

postgresql - 用于分布式环境的 Broadleaf Ehcache 到 Redis

java - 旋转位矩阵