Tag Archives: sql

如何在Hibernate中让SQLServer使用nvarchar代替varchar

有关SQLServer中varchar和nvarchar的区别可以直接去google。一般在中文系统中应该使用nvarchar作为字符串的对应类型,但是Hibernate中的默认实现SQLServerDialect使用了varchar。以下方法可以简单地转为使用nvarchar: 自己写一个dialect,继承SQLServerDialect,在构造器中将原先varchar类型的注册声明覆盖: registerColumnType(Types.VARCHAR, "nvarchar($l)"); registerColumnType(Types.VARCHAR, “nvarchar($l)”); 千万注意,“$”后面的是字段长度的占位符,是“l(ength)”,而不是数字“1”(因为看hibernate的doc时没分清“l”和“1”,浪费了我一上午去找原因) 然后在hibernate的配置文件中将hibernate.dialect的值设为你的dialect实现类就OK了

小心Derby的ResultSet陷阱

Derby作为一个纯Java实现的嵌入式DB一直很受Java社区的欢迎,在我们的项目中也用到了。但昨天晚上遇到的一个问题让我对Derby相当失望——Derby实现的ResultSet会将列名中的表名抹掉 具体代码: SQL: SELECT staff.staffid FROM staff WHERE … JDBC: ResultSet rs = stmt.executeQuery(…); if(rs.next()){     String id = rs.getString("staff.id"); } ResultSet rs = stmt.executeQuery(…); if(rs.next()){ String id = rs.getString(“staff.id”); } 运行时抛出异常: Caused by: java.sql.SQLException: 列“staff.staffid”未找到。     at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)     at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)     at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)     at read more »

Hacker

无觅相关文章插件,快速提升流量