您的位置:首页 > 数据库

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

2011-01-01 19:40 633 查看
//最近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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐