发现一个hibernate针对derby数据库的问题bug,及解决办法

//最近apache软件基金会,发布了derby10.7,由于derby到10.7版本才支持boolean数据类型,今天发现一个hibernate针对derby数据库的一个bug,特意把它贴出来,以提醒他人。

        


//2011-01-01发现的hibernate针对derby数据库的问题。


//有问题的JPQL查询语句        

//String sql = "SELECT letter FROM LetterReceiveModel As letter WHERE letter.receivePersonId=?1 AND letter.read=false AND letter.favoriteBoxFlag=false AND letter.trashBoxFlag=false";


        //发现hibernate在翻译JPQL查询时,翻译规则是,false—>0,true—>1,所以对于bit类型的字段是合适的。

        //但是对于derby数据库的boolean型字段类型就会出错,解决办法是明确传递boolean型参数,这样就可以避开这个bug。

//没问题的JPQL写法

        String sql = "SELECT letter FROM LetterReceiveModel As letter WHERE letter.receivePersonId=?1 AND letter.read=?2 AND letter.favoriteBoxFlag=?3 AND letter.trashBoxFlag=?4";

        //

        Query query = this.getEntityManager().createQuery(sql);

        query.setParameter(1, receivePersonId);

        query.setParameter(2, false);

        query.setParameter(3, false);

        query.setParameter(4, false);


//执行查询

        List<LetterReceiveModel> objList = query.getResultList();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值