刚才整理了一下varchar和nvarchar的区别,然后用Hibernate映射到数据库时,发现String类型被映射为了varchar,就在网上找了一下怎样将String映射为nvarchar。
方法一:
对于String类型,你可能是这样映射的
- private String name;
- @Column(length = 20 , nullable = false , unique = true)
- public String getName() {
- return name;
- }
查看数据库,你会发现name字段应该是这样 name varchar(20);
现在我们修改一下Annotation,让他映射为 name nvarchar(20)
- private String name;
- @Column(length = 20 , nullable = false , unique = true , columnDefinition="nvarchar(20)")
- public String getName() {
- return name;
- }
再查看数据库,你会发现现在应该是 name nvarchar(20);
注意:加上columnDefinition之后,length好像没有作用了,必须要在columnDefinition的value中指定长度。
- private String name;
- @Column(nullable = false , unique = true , columnDefinition="nvarchar(20)")
- public String getName() {
- return name;
- }
方法二:
这个没有试,看上去应该可以。
就是继承SQLServerDialect ,写一个自己的,然后再xml中配置一下。
方法网址:http://stackoverflow.com/questions/1099413/how-can-hibernate-map-the-sql-data-type-nvarcharmax
- public class SQLServerNativeDialect extends SQLServerDialect {
- public SQLServerNativeDialect() {
- super();
- registerColumnType(Types.VARCHAR, "nvarchar($l)");
- registerColumnType(Types.CLOB, "nvarchar(max)");
- }
- public String getTypeName(int code, int length, int precision, int scale) throws HibernateException {
- if(code != 2005) {
- return super.getTypeName(code, length, precision, scale);
- } else {
- return "ntext";
- }
- }
- }
总结:
顺便查了一下columnDefinition,发现他可以设置默认值。Hibernate会把columnDefinition 的内容直接写在生成标的ddl中,因此语法必须正确。
- @Column(columnDefinition="int default 0",nullable=false)
columnDefinition
public abstract java.lang.String columnDefinition
Defaults to the generated SQL to create a column of the inferred type.
(摘)可选: 为这个特定字段覆盖sql DDL片段 (这可能导致无法在不同数据库间移植)
相关推荐
case Types.NVARCHAR: case Types.CHAR: typeInJava = "String"; break; case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: typeInJava = useInteger ? "Integer" : "int"; break; case ...
hibernate3.0连接SQLServer代码简单例子,单表t_user例子,可以运行。 数据库表设计 CREATE TABLE [dbo].[t_user]( [t_id] [nvarchar](50) NOT NULL, [t_login_name] [nvarchar](50) NULL, [t_password] ...
用友T+从数据类型 nvarchar 转换为 numeric 时出错.pdf
因最近自己制作的软件需运行在简繁系统中,但数据库设计时...此脚本可批量处理数据库内所有char和varchar转换为nchar和nvarchar,已集成重建主键,约束,索引,此脚本没有启用事务,运行前请备份原数据库或手动增加事务
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会...
nvarchar binary数据类型转换
char、varchar、nchar、nvarchar四种类型的区别char、varchar、nchar、nvarchar四种类型的区别
Sqlserver中char,nchar,varchar与Nvarchar的区别分析,使用sqlserver的朋友可以参考下。
SQLServer中char、varchar、nchar、nvarchar的区别 SQLServer中char、varchar、nchar、nvarchar的区别.txt
主要介绍了PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法,可通过CAST数据类型转换来解决,是非常实用的技巧,需要的朋友可以参考下
问: sql server中的varchar和Nvarchar有什么区别啊,varchar好像是一个英文和一个汉字都站两个字节,而Nvarchar则是一个英文占一个字节,汉字占两个字节。可是这个对asp程序有什么影响? 答: varchar(n) 长度为 ...
nchar_char_varchar与nvarchar有何区别?
对于程序中的一般字符串类型的字段,SQL Server中有char、varchar、nchar、nvarchar四种类型来对应,那么这四种类型有什么区别呢,这里做一下对比。 1.定长或变长 所谓定长就是长度固定,当要保存的数据长度不够时将...
您可能感兴趣的文章:sql中varchar和nvarchar的区别与使用方法Sqlserver中char,nchar,varchar与Nvarchar的区别分析基于SQL Server中char,nchar,varchar,nvarchar的使用区别深入char、varchar、text和nchar、nvarchar...
主要给大家详细介绍了关于Oralce中VARCHAR2()与NVARCHAR2()的区别,文中先通过翻译官方的介绍进行区别总结,然后由一个实战示例代码进行演示,相信对大家的理解会很有帮助,有需要的朋友们下面来跟着小编一起看看吧...
本篇文章是对char、varchar、text和nchar、nvarchar、ntext的区别进行了详细的分析介绍,需要的朋友参考下
从一个mysql数据库导过来的,算是挺新的数据库吧。 把sql语句里第一句的USE [HotelManager] GO中HotelManager改成你建立的数据库名。。。 T_province表 省 自治区 直辖市(一级) ...postCode nvarchar NULL 邮政编码
nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。 两字段分别有字段值:我和coffee 那么varchar字段占2×2+6=10个字节的存储空间,...
CodeDepID 单位分类 序号 nvarchar(50) 3. CodeDep 单位分类 码 nvarchar(4) 4. CodeDepMeaning 单位分类 码意义 nvarchar(max) 5. CodeLevel 级别分类 码 nvarchar(2) 6. CodeLevelMeaning 级别分类 码意义 ...
主要介绍了mysql如何处理varchar与nvarchar类型中的特殊字符,需要的朋友可以参考下