Chinaunix首页 | 论坛 | 博客
  • 博客访问: 783516
  • 博文数量: 738
  • 博客积分: 7000
  • 博客等级: 少将
  • 技术积分: 5000
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-12 09:00
文章分类

全部博文(738)

文章存档

2011年(1)

2008年(737)

我的朋友

分类:

2008-09-12 09:01:32

    /**
     * 为了获取一个unit为null的用户,如果传入一个null作为Uint实例则返回的结果总是0
     * 因为执行的SQL为:(select * ) from USER_INF this_ where this_.UNIT_ID=''
     * 这不是我们所期望的结果
     
*/

    @Test
    
public void getUsersWhosUnitIsNullByRestrictionsEqNullUnit() {
        DetachedCriteria dc 
= DetachedCriteria.forClass(User.class);
        dc.add(Restrictions.eq(
"unit"null));

        Criteria cri 
= dc.getExecutableCriteria(session);
        log.debug(
"getUsersWhosUnitIsNullByRestrictionsEqNullUnit():" + cri.list().size());
    }

    
    
/**
     * 为了获取一个unit为null的用户,如果传入一个id为null的Unit实例则会报错,无法翻译为SQL
     * 错误类型为:org.hibernate.TransientObjectException
     * 这也不是我们所期望的结果
     
*/

    @Ignore
    @Test(expected
=TransientObjectException.class)
    
public void getUsersWhosUnitIsNullByRestrictionsEqUnitNullId() {
        Unit unit 
= new Unit();
        log.debug(unit.getId());
        DetachedCriteria dc 
= DetachedCriteria.forClass(User.class);
        dc.add(Restrictions.eq(
"unit", unit));

        Criteria cri 
= dc.getExecutableCriteria(session);
        log.debug(
"getUsersWhosUnitIsNull():" + cri.list().size());
    }


    
/**
     * 为了获取一个unit为null的用户正确的方法应该是使用Restrictions.isNull方法
     * 因为执行的SQL为:(select * ) from USER_INF this_ where this_.UNIT_ID is null
     * 这才是我们所希望的结果
     
*/

    @Test
    
public void getUsersWhosUnitIsNullByRestrictionsIsNull() {
        DetachedCriteria dc 
= DetachedCriteria.forClass(User.class);
        dc.add(Restrictions.isNull(
"unit"));

        Criteria cri 
= dc.getExecutableCriteria(session);
        log.debug(
"getUsersWhosUnitIsNullByRestrictionsIsNull():" + cri.list().size());
    }

--------------------next---------------------

阅读(391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~