锁定老帖子 主题:一个无奈的Hibernate问题
精华帖 (3) :: 良好帖 (0) :: 新手帖 (10) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-18
你在配置文件里配置成string的试试
|
|
返回顶楼 | |
发表时间:2009-09-18
whaosoft 写道 你在配置文件里配置成string的试试
木有配置文件,如果有就不是NativeSQL执行方式了,呵呵。 |
|
返回顶楼 | |
发表时间:2009-09-19
非常讨厌你这种表达方式,除非关键术语如hibernate直接用英文,个人观点。
别说这么多年就学到了一个but... badqiu的方法确实经常用到。 |
|
返回顶楼 | |
发表时间:2009-09-19
最后修改:2009-09-19
貌似碰到过,一个方法是你在sql里面cast(ColA as char(n));第二个方法,要是多次用到的话,看看直接修改Hibernate的类了,反正也提供了源代码
|
|
返回顶楼 | |
发表时间:2009-09-19
使用Transformers将结果直接转化为Map
|
|
返回顶楼 | |
发表时间:2009-09-19
好像碰到过 用cast 不确定是不是一个问题
|
|
返回顶楼 | |
发表时间:2009-09-19
java 中的 char 本来就是一位的....
Oracle 中的char() 可以用来存数组形式的string ... 映射过来应该是string 才是啊... |
|
返回顶楼 | |
发表时间:2009-09-19
linliangyi2007 写道 魔力猫咪 写道 为什么呢?大不了新建一个专门的纯JDBC数据库连接就是了。你们使用了SQL,而且从这种使用上来看,也没什么缓存的问题。那么干脆就直接另建一个数据库连接好了。最多对这个连接进行限制,让其只能查询。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。 额~~~你说的也对,不过那样又是一个连接池了。 实际上,我的问题不是用不用hibernate啊,而是有没有在Hibernate nativeSQL 执行中对char(n)的正确读取方法? 你可以采用 Nutz 来做: DataSource ds = null; // get your datasource here. Dao dao = new NutDao(ds); Sql sql = Sqls.create("YOUR SQL HERE").setCallback(new SqlCallback() { public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException { List<Object[]> re = new LinkedList<Object[]>(); while (rs.next()) { // Write you code here } return re; } }); dao.execute(sql); // Get the query result List<Object[]> list = sql.getList(Object[].class); // ... for (Object[] objs : list) { // write anything as you want } |
|
返回顶楼 | |
发表时间:2009-09-20
这个问题我遇到过,确实都是CharacterType这个类惹的祸,初步看到,HIBERNATE从JDBC取得数据库字段类型,判断如果是CHAR(具体代码好像是12,记不得了),就使用以上的那个类CharacterType来处理,然后这个类直接取第一位,也不管数据库是CHAR(1) 还是CHAR(n),我觉得这是明显有问题的,不知道是不是有什么特殊的原因,不过我使用处理String类型的那个类替换了这个类,到现在快一年了,没发现有什么不妥。
|
|
返回顶楼 | |
发表时间:2009-09-20
支持lgdlgd的观点
|
|
返回顶楼 | |