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

具有多个关联的休眠获取

仇飞鹏
2023-03-14
问题内容

我这样做是为了对实体对象进行延迟加载:

@Transactional(readOnly = true)
public T getWithAssociation(final long id, String association) {
    Session session = sessionFactory.getCurrentSession();
    final Criteria crit = session.createCriteria(genericType);
    crit.setFetchMode(association, FetchMode.JOIN);
    crit.add(Property.forName("id").eq(id));
    return (T) crit.uniqueResult();
}

我想与多个延迟加载的集合返回一个实体对象 加载的 ,我能做到这一点(通过在列表中,并设置超过联想单个标准是什么?):

   @Transactional(readOnly = true)
    public T getWithAssociations(final long id, List<String> associations) {
        Session session = sessionFactory.getCurrentSession();
        final Criteria crit = session.createCriteria(genericType);
        for(String association:associations) {
            crit.setFetchMode(association, FetchMode.JOIN);
        }
        crit.add(Property.forName("id").eq(id));
        return (T) crit.uniqueResult();
    }

问题答案:

是?

该文档包含以下内容:

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .setFetchMode("mate", FetchMode.EAGER)
    .setFetchMode("kittens", FetchMode.EAGER)
    .list();

该查询将通过外部联接获取伴侣和小猫。有关更多信息,请参见第20.1节“获取策略”。



 类似资料:
  • 问题内容: 我有两个与多对多关联的表。 —数据库片段: 加载 ID 名称 会话 ID 日期 sessionsloads LoadId 的SessionID —hibernate映射片段: 为了从关联表 sessionloads中 删除一个条目,我执行以下代码: 但是,启动后,此代码将保持不变。 删除关联的正确方法是什么? 问题答案: 您需要更新和之间的链接的两端: 实际上,许多开发人员使用防御性方

  • 问题内容: 可以使用Hibernate标准吗? 问题答案: 我遇到了完全相同的问题,并且能够像这样解决它: 注:,和在上面的代码指在属性名,和类,相应地(类具有属性等)。 对于此解决方案,您甚至不需要在中设置和参数。

  • 问题内容: 我正在尝试在Java应用程序中实现Hibernate持久层,但遇到了一些麻烦。每次尝试访问简单的单向关联时,我都会遇到无代理错误。我没有以正确的方式实现Hibernate- 我正在使用会话控制的线程方法,他们确实建议您不要将其用于生产。但是,他们在教程中使用它。我仍在尝试使基础知识正常运行,因此我认为按照教程进行操作是可以的。但是,我无法使用简单的关联来工作。我有一堂课,看起来像这样:

  • 问题内容: 我正在尝试使Spring-Data JPA与Hibernate一起使用自定义的MultiTenantConnectionProvider。 我下面的配置中的所有内容似乎都可以正常工作。我的类被称为每次我尝试调用库方法。 主要问题是无法提供租户标识符。Spring-Data提供的Repository接口负责获取Hibernate Session。 有什么方法可以向Spring-Data提

  • 问题内容: 问题 首先,我想知道我的数据库结构很糟糕,但是目前我无法更改它。 话虽这么说,我需要在Hibernate(4.2.1)中创建一对多的双向关系,该关系不涉及主键(关系的“父”侧仅包含唯一键)并且不涉及联接表。表示这种关系的外键是从“子”到“父”的反向指针(请参见下文)。我已经搜索并尝试了各种不同的注释配置,但是没有运气。我要的是可能的吗? 数据库 GLOBAL_PART PART_REL

  • 问题内容: 我在我的数据库3个表:,和 学生可以有多个课程,课程可以有多个学生。和之间存在多对多关系。 我为我的项目和课程添加了3个案例。 (a)当我添加用户时,它会保存得很好, (b)当我为学生添加课程时,它将在-预期行为中再次创建新行。 (三)当我试图删除学生,则在删除适当的记录和,但它也删除其中不需要的记录。即使课程中没有任何用户,我也希望课程在那里。 下面是我的表和注释类的代码。 这是Hi