其中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;
}
}
分享到:
相关推荐
除了基本的条件和排序,DetachedCriteria还可以进行子查询、连接查询、分组聚合等复杂操作。例如,你可以使用`createCriteria()`方法来建立关联查询,或者使用`setProjection()`设置分组或聚合函数。 **7. 总结** ...
DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria 对象 DetachedCriteria...
### DetachedCriteria 使用详解 ...以上方法为 `DetachedCriteria` 的使用提供了丰富的功能,使其成为处理各种查询需求的强大工具。通过灵活运用这些方法,你可以构建出满足各种业务场景的复杂查询。
在Java的持久化框架Hibernate中,...当需要进行多表关联查询时,应优先考虑使用HQL或Criteria API中的JOIN功能。通过了解这些工具的优缺点,我们可以更好地选择适合特定场景的查询方式,以提高代码的可读性和性能。
5. **关联查询**:使用createAlias()方法可以实现多表联查,例如`criteria.createAlias("associatedEntity", "alias")`,然后可以通过"alias.property"的方式引用关联实体的属性。 6. **子查询**:DetachedCriteria...
在Java的持久化框架Hibernate中,...有时,两者结合使用也能发挥更大的优势,比如用Criteria构建基础查询,然后通过HQL进行更复杂的扩展。理解并熟练掌握这两种查询方式,将有助于提升Hibernate的使用效率和代码质量。
10. **使用DetachedCriteria**:当查询条件在未来的某个时刻才确定时,可以先创建一个DetachedCriteria对象,然后在需要的时候再与Session关联并执行查询。 在实际开发中,Hibernate Criteria查询提供了很大的便利...
根据题目中的例子,我们有两个实体类`MainClass`和`SubClass`,它们之间存在多对多关系,并通过一个中间表进行关联。每个`MainClass`对象可以拥有多个`SubClass`对象,反之亦然。这种多对多的关系通常通过一个额外的...
而DetachedCriteria则是一个独立的对象,可以在不依赖Session的情况下构建查询,然后在需要的时候与Session关联执行。DetachedCriteria通过forClass()或forEntityName()方法初始化,这对于在服务层组装查询条件非常...
6. 使用DetachedCriteria执行查询: ```java DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); // 添加条件... List<User> results = getHibernateTemplate().findByCriteria...
4. **Join操作**:在QBC中,可以方便地进行内连接(Inner Join)、左连接(Left Outer Join)以及其他类型的连接操作,以处理多表关联查询。 5. **子查询**:QBC允许我们在查询中嵌套其他查询,这在处理复杂的业务...
本文将深入探讨在使用Hibernate进行MySQL查询时的一些关键知识点,以帮助开发者更好地理解和应用这些技术。 首先,我们需要理解Hibernate的核心概念。Hibernate通过提供一个中间层,将Java对象与数据库表进行映射,...
无论是简单的条件查询还是复杂的多表关联查询,Criteria都能提供强大的支持。同时,DetachedCriteria的引入使得查询条件可以独立于Session存在,进一步增强了应用的灵活性。理解并熟练掌握这些API的使用方法,对于...
使用Criteria API进行联表查询时,可以使用`createCriteria()`和`createAlias()`方法定义关联关系,并通过`setFetchMode()`设置Fetch策略。 10. **查询结果的转换和处理** Hibernate查询的结果可以是单个对象、...
Criteria用于在线查询,直接与Hibernate Session关联,而DetachedCriteria则可在不依赖Session的情况下创建,适用于离线或延迟执行的查询。DetachedCriteria可以通过`forClass(Class)`或`forEntityName(String)`静态...
使用 `DetachedCriteria` 可以预编译查询,提高性能,也可以在需要时再执行查询。 ```java DetachedCriteria detached = DetachedCriteria.forClass(MyEntity.class) .add(Restrictions.eq("property", value)); ...
- 学习如何使用Criteria API创建查询,包括添加限制条件、排序、分页等,以及如何使用DetachedCriteria进行延迟加载。 3. **Chapter 10:一对多与多对一关系映射** - Hibernate支持多种关系映射,本章将深入讲解...
笔记将深入解析HQL的基本语法,包括选择(select)、从(from)、条件(where)、分组(group by)和排序(order by)等,以及如何使用HQL进行关联查询。 6. Criteria查询和Criteria API:除了HQL,Hibernate还提供...
【Hibernate查询】是一种在Java应用中使用ORM(对象关系映射)框架Hibernate进行数据库操作的方式。Hibernate通过HQL(Hibernate Query Language)和Criteria API提供了一种面向对象的查询机制,使得开发者无需直接...
8. **HQL查询和关联查询** Hibernate Query Language (HQL)是Hibernate的面向对象的查询语言,可以用来执行复杂的查询。例如,`findAll(String hql, Object[] param)`方法接受HQL语句和参数数组,返回匹配的实体...