当前位置: 首页 > 面试题库 >

使用hibernate选择

鲁博赡
2023-03-14
问题内容

我在Hibernate的Internet上看到了一些transaction.commit()用于select语句的示例。下面是示例代码。

public static List<?> list(Class<?> className,int start,int limit,SearchFilter[] searchFilter){
    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction transaction = null;

    try {
        transaction = session.beginTransaction();

        Criteria criteria = session.createCriteria(className);
        criteria.setFirstResult(start);
        criteria.setMaxResults(limit);

        for(SearchFilter sf : searchFilter){
            String[] values = sf.getValue();
            if(values != null){
                if(values.length == 1) {
                    criteria.add(Restrictions.eq(sf.getField(), values[0]));
                }else{
                    criteria.add(Restrictions.in(sf.getField(), values));
                }
            }
        }

        List<?> Objects = criteria.list();
        transaction.commit();

        return Objects;
    }catch (Exception e) {
        transaction.rollback();
        e.printStackTrace();
    }finally{
        session.close();
    }

    return null;
}

为什么我们要为select语句开始并提交事务?


问题答案:

一切都在交易范围内发生。有时,软件会自动为您管理交易,而hibernate则不会。无论是只读还是否,在hibernate状态下都必须打开和关闭事务。



 类似资料:
  • 问题内容: 我想使用Hibernate选择单列而不是整个对象。到目前为止,我有这个: 我的问题是上述代码将整个People表返回为一个对象,而不仅仅是“ firstname”。我不确定如何指定仅返回“名字”而不是整个对象。 问题答案: 您可以像这样设置投影: 有了这个,您只能得到名字的回报。 我在同一情况下在堆栈上找到了另一个链接。希望这也将对您有所帮助。

  • 我正在使用Postgres 9.3.5,最近将Hibernate从3.2更新到4.3.11。 因此,我无法运行“选择…更新”查询,而只能运行“选择…”。。对于我来说,“for update”是不够的,因为它返回 无法提取结果集。原因:错误:无法将FOR UPDATE应用于外部联接的可空端 我试图使用的标准如下: 我正在使用以下锁定: 在3.2中:标准。设置锁定模式(锁定模式。升级); 在4.3.1

  • 上下文:我有两个表Secret_Agent和secret_mission。两者之间有一种@manytomany的关系,因为可以给许多特工执行相同的秘密任务,而同一个特工可以给许多秘密任务。 表SECRET_AGENT 列SecretAgentId,SecretAgentName 表SECRET_MISSION 列SecretMissionId、SecretMissionName、SecretMis

  • 我正在尝试使用Spring Boot和Spring数据通过鉴别器实现多租户。 我创建了一个抽象类来表示多租户实体。类似于此: 如何全局启用多租户Hibernate过滤器?

  • 问题内容: 假设我有两个表格,书籍和评论。评论具有一列,星号,其值可以介于1到5之间。一本书可以包含许多评论。 如何选择所有书籍,以便使用Criteria API返回每本书的前3名和后3条评论(而不是所有评论)? 如果Criteria API无法使用,我会提出其他建议,例如HQL,SQL等。 问题答案: 回答我自己的问题… 我实际上对这有多么困难感到惊讶。涉及查询书籍的所有解决方案以及每本书具有其

  • 问题内容: 有一个专有的hibernate注释,用于指定在DDL生成时使用的 外键 约束 名称 :。 还有一种方法可以指定 主键 约束 名称 吗? 问题答案: 对于标准JPA来说是不可能的,并且对于主键约束也不受Hibernate支持。 关于此功能请求(HB-1245)确实存在一个非常老的问题,但看起来并没有引起太多关注。