`

使用DetachedCriteria进行关联查询

 
阅读更多


其中MobiUser和Rewards是多对多的关系,MobiuserRewardsR是连接它们的关联表。

 

 

@Override
    public List<MobiuserRewardsR> findMyRewards(TableModel<MobiuserRewardsR> tableModel, Long mobiUserId) {
        DetachedCriteria dc = DetachedCriteria.forClass(MobiuserRewardsR.class);
        dc.setFetchMode("mobiUser", FetchMode.JOIN);
        dc.setFetchMode("rewards", FetchMode.JOIN);
        if (mobiUserId != null) {
            dc.createAlias("mobiUser", "mobiUser");
            dc.add(Restrictions.eq("mobiUser.id", mobiUserId));
        }
        dc.createAlias("rewards", "rewards");
        dc.add(Restrictions.eq("rewards.deleted", Constant.NO));
        dc.add(Restrictions.eq("rewards.enabled", Constant.ENABLED));
        dc.add(Restrictions.gt("rewards.endTime", new Date()));
        dc.addOrder(Order.asc("rewards.endTime"));
        
        return findPageByCriteria(dc, tableModel);
    }

 

/**
 * MobiuserRewardsR generated by hbm2java
 */
@Entity
@Table(name = "mobiuser_rewards_r", schema = "public")
public class MobiuserRewardsR extends BaseBo {

	private long id;
	private Rewards rewards;
	private MobiUser mobiUser;
	private Boolean gift;

	public MobiuserRewardsR() {
	}

	@SequenceGenerator(name = "seq_mobiuser_rewards_r", sequenceName = "seq_mobiuser_rewards_r", initialValue = 1, allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "seq_mobiuser_rewards_r")
	@Id
	@Column(name = "id", unique = true, nullable = false)
	public long getId() {
		return this.id;
	}

	public void setId(long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "rew_id")
	public Rewards getRewards() {
		return this.rewards;
	}

	public void setRewards(Rewards rewards) {
		this.rewards = rewards;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "mobiuser_id")
	public MobiUser getMobiUser() {
		return this.mobiUser;
	}

	public void setMobiUser(MobiUser mobiUser) {
		this.mobiUser = mobiUser;
	}

    public Boolean getGift() {
        return gift;
    }

    @Column(name = "gift", nullable = false)
    public void setGift(Boolean gift) {
        this.gift = gift;
    }
}
 
分享到:
评论

相关推荐

    Hibernate 使用DetachedCriteria操作

    除了基本的条件和排序,DetachedCriteria还可以进行子查询、连接查询、分组聚合等复杂操作。例如,你可以使用`createCriteria()`方法来建立关联查询,或者使用`setProjection()`设置分组或聚合函数。 **7. 总结** ...

    DetachedCriteria查询

    DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria 对象 DetachedCriteria...

    DetachedCriteria使用介绍

    ### DetachedCriteria 使用详解 ...以上方法为 `DetachedCriteria` 的使用提供了丰富的功能,使其成为处理各种查询需求的强大工具。通过灵活运用这些方法,你可以构建出满足各种业务场景的复杂查询。

    Hibernate(24): 为什么用DetachedCriteria不能表连接地取数据?

    在Java的持久化框架Hibernate中,...当需要进行多表关联查询时,应优先考虑使用HQL或Criteria API中的JOIN功能。通过了解这些工具的优缺点,我们可以更好地选择适合特定场景的查询方式,以提高代码的可读性和性能。

    QBC的各种查询

    5. **关联查询**:使用createAlias()方法可以实现多表联查,例如`criteria.createAlias("associatedEntity", "alias")`,然后可以通过"alias.property"的方式引用关联实体的属性。 6. **子查询**:DetachedCriteria...

    hibernate里面的 两种查询

    在Java的持久化框架Hibernate中,...有时,两者结合使用也能发挥更大的优势,比如用Criteria构建基础查询,然后通过HQL进行更复杂的扩展。理解并熟练掌握这两种查询方式,将有助于提升Hibernate的使用效率和代码质量。

    Hibernate_Criteria条件查询数据

    10. **使用DetachedCriteria**:当查询条件在未来的某个时刻才确定时,可以先创建一个DetachedCriteria对象,然后在需要的时候再与Session关联并执行查询。 在实际开发中,Hibernate Criteria查询提供了很大的便利...

    Hibernat 使用Criteria查询多对多关系(SET集合)条件

    根据题目中的例子,我们有两个实体类`MainClass`和`SubClass`,它们之间存在多对多关系,并通过一个中间表进行关联。每个`MainClass`对象可以拥有多个`SubClass`对象,反之亦然。这种多对多的关系通常通过一个额外的...

    Hibernate中Criteria的用法详解

    而DetachedCriteria则是一个独立的对象,可以在不依赖Session的情况下构建查询,然后在需要的时候与Session关联执行。DetachedCriteria通过forClass()或forEntityName()方法初始化,这对于在服务层组装查询条件非常...

    Hibernate中Criteria的完整用法

    6. 使用DetachedCriteria执行查询: ```java DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); // 添加条件... List&lt;User&gt; results = getHibernateTemplate().findByCriteria...

    Hibernate QBC高级查询.rar

    4. **Join操作**:在QBC中,可以方便地进行内连接(Inner Join)、左连接(Left Outer Join)以及其他类型的连接操作,以处理多表关联查询。 5. **子查询**:QBC允许我们在查询中嵌套其他查询,这在处理复杂的业务...

    Hibernate的MySql查询.rar

    本文将深入探讨在使用Hibernate进行MySQL查询时的一些关键知识点,以帮助开发者更好地理解和应用这些技术。 首先,我们需要理解Hibernate的核心概念。Hibernate通过提供一个中间层,将Java对象与数据库表进行映射,...

    Criteria使用方法

    无论是简单的条件查询还是复杂的多表关联查询,Criteria都能提供强大的支持。同时,DetachedCriteria的引入使得查询条件可以独立于Session存在,进一步增强了应用的灵活性。理解并熟练掌握这些API的使用方法,对于...

    Hibernate-基础联表模板

    使用Criteria API进行联表查询时,可以使用`createCriteria()`和`createAlias()`方法定义关联关系,并通过`setFetchMode()`设置Fetch策略。 10. **查询结果的转换和处理** Hibernate查询的结果可以是单个对象、...

    Hibernate的Criteria用法总结

    Criteria用于在线查询,直接与Hibernate Session关联,而DetachedCriteria则可在不依赖Session的情况下创建,适用于离线或延迟执行的查询。DetachedCriteria可以通过`forClass(Class)`或`forEntityName(String)`静态...

    Hibernate Criteria 完全使用

    使用 `DetachedCriteria` 可以预编译查询,提高性能,也可以在需要时再执行查询。 ```java DetachedCriteria detached = DetachedCriteria.forClass(MyEntity.class) .add(Restrictions.eq("property", value)); ...

    孙卫琴精通hibernate part2

    - 学习如何使用Criteria API创建查询,包括添加限制条件、排序、分页等,以及如何使用DetachedCriteria进行延迟加载。 3. **Chapter 10:一对多与多对一关系映射** - Hibernate支持多种关系映射,本章将深入讲解...

    韩顺平.2011版.hibernate笔记.zip

    笔记将深入解析HQL的基本语法,包括选择(select)、从(from)、条件(where)、分组(group by)和排序(order by)等,以及如何使用HQL进行关联查询。 6. Criteria查询和Criteria API:除了HQL,Hibernate还提供...

    hibernate查询

    【Hibernate查询】是一种在Java应用中使用ORM(对象关系映射)框架Hibernate进行数据库操作的方式。Hibernate通过HQL(Hibernate Query Language)和Criteria API提供了一种面向对象的查询机制,使得开发者无需直接...

    Hibernate中查询的法方

    8. **HQL查询和关联查询** Hibernate Query Language (HQL)是Hibernate的面向对象的查询语言,可以用来执行复杂的查询。例如,`findAll(String hql, Object[] param)`方法接受HQL语句和参数数组,返回匹配的实体...

Global site tag (gtag.js) - Google Analytics