当前位置: 首页 > 知识库问答 >
问题:

使用多个关联Hibernate获取

严亦
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();
    }

共有1个答案

鲁鸿
2023-03-14

是么?

这些文件包含以下内容:

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

此查询将通过外部联接获取配偶和小猫。有关更多信息,请参阅第20.1节“获取策略”。

 类似资料:
  • 我有两个表,ComputerNode和Connection。ComputerNode有一个主键< code>nodeid,但连接没有主键。我无法修改表模式。如果它们有一对多的关系,我应该如何创建java POJO?基本上我的目标是做一个像这样的内部连接: 下面是 SQL 表架构。计算机节点表: 连接表: 表之间的关系是一对多的。一个计算机节点可以有多个连接 我已经创建了两个Java的POJO类,但

  • 我通过一个实体(因为关联有一个附加字段),在线程和参与者之间有一个多对多的关系。我有以下映射。 线程实体 参与实体 线程参与者实体 ThreadParticipantPK 现在,我尝试使用以下查询(使用Spring数据JPA)获取线程,并将Hibernate作为我的JPA提供者。 问题是,当中的关联的获取类型设置为,

  • 1. 前言 本节课,咱们一起继续聊聊多对多关联映射。通过本节课程,你将了解到: 多对多关联映射的实现; 双向多对多关联映射的实现。 2. 多对多关联映射 首先了解表中的多对多关系,学生表中的数据和课程表中的数据就存在多对多关系。 一名学生可以选修多门课程,一门课程可以供多名学生选修。 数据库通过主外键的机制描述表中的数据之间的关系。对于存在多对多关系的数据表,借助于中间表,分拆成两个一对多(或者多

  • 问题内容: 我正在使用Hibernate3.2,并使用条件来构建查询。我想为多对一关联添加和“排序依据”,但我不知道该怎么做。我猜,Hibernate查询最终看起来像这样: 我已经尝试过criteria.addOrder(“assnName.propertyName”),但是它不起作用。我知道可以为常规属性完成此操作。我想念什么吗? 问题答案: 好的,找到答案了。我尝试了一些我认为不可行的方法,但

  • 问题内容: 我这样做是为了对实体对象进行延迟加载: 我想与多个延迟加载的集合返回一个实体对象 加载的 ,我能做到这一点(通过在列表中,并设置超过联想单个标准是什么?): 问题答案: 是? 该文档包含以下内容: 该查询将通过外部联接获取伴侣和小猫。有关更多信息,请参见第20.1节“获取策略”。

  • 我有两个多对多关联的表。 DB详细信息:用户-->列[Id,name]