<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    I found out today that MS Sql server seems to handle Unicode in a very special way. Instead of having some support a database or table level, each Unicode column have to be created as “national”. That is be either nchar, nvarchar or ntext.

    Ms SQL Server 2005 seems to go one step further by announcing future deprecation for ntext, text and image types.

    From Sql Server 2005 notes:

    ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.”

    When working with Hibernate it seems there is no dialect to handle Unicode integration properly. You have to get down and write a custom dialect that maps to the new data types.

    /**
    * Unicode support in SQL Server
    *
    * @author icocan
    */
    public class UnicodeSQLServerDialect extends SQLServerDialect {

    public UnicodeSQLServerDialect() {
    super();

    // Use Unicode Characters
    registerColumnType(Types.VARCHAR, 255, "nvarchar($l)");
    registerColumnType(Types.CHAR, "nchar(1)");
    registerColumnType(Types.CLOB, "nvarchar(max)");

    // Microsoft SQL Server 2000 supports bigint and bit
    registerColumnType(Types.BIGINT, "bigint");
    registerColumnType(Types.BIT, "bit");
    }
    }
    read more ...

    You have to write your own SQLServerDialect class, it looks something like this:
    publicclassSQLServerNativeDialectextendsSQLServerDialect{
         publicSQLServerNativeDialect(){
             super();
             registerColumnType(Types.VARCHAR,"nvarchar($l)");
             registerColumnType(Types.CLOB,"nvarchar(max)");
         }

        publicString getTypeName(int code,int length,int precision,int scale)throwsHibernateException{
            if(code !=2005){
                returnsuper.getTypeName(code, length, precision, scale);
            }else{
                return"ntext";
            }
        }
    }

    This class maps Hibernate's types to SQL types, so the class will map the nvarchar(max) SQL Data Type to Hibernate's CLOB data type.

    The getTypeName method is used to return "ntext" when Hibernate asks about the data type with code 2005 (which looks like it's the nvarchar(max) data type).

    Finally, you need to change your hibernate persistence dialect to this new SQLServerDialect class, which allows hibernate to translate data types into SQL data types.


    posted on 2010-11-29 18:49 seal 閱讀(692) 評論(0)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 色偷偷亚洲女人天堂观看欧| 亚洲成色在线影院| 国产精品亚洲专区无码牛牛| 青青草免费在线视频| 亚洲AV无码一区二区二三区软件 | 一级黄色免费毛片| 四只虎免费永久观看| 看Aⅴ免费毛片手机播放| 免费观看亚洲人成网站| jzzijzzij在线观看亚洲熟妇| 日本无吗免费一二区| 高潮毛片无遮挡高清免费| 亚洲精品高清一二区久久| 一个人看www免费高清字幕| 全黄a免费一级毛片人人爱| 一级成人生活片免费看| 亚洲午夜久久久久久久久久| 人人揉揉香蕉大免费不卡| 亚洲综合视频在线| 国产免费一区二区三区| 亚洲av无码一区二区三区天堂| mm1313亚洲精品无码又大又粗| 国产福利免费视频| 亚洲视频.com| 丁香花在线观看免费观看| 国产亚洲高清在线精品不卡| 美腿丝袜亚洲综合| 99re视频精品全部免费| 亚洲精品无码国产片| 亚洲国产人成精品| 免费无码成人AV在线播放不卡| 亚洲精品午夜国产va久久| 国产免费看插插插视频| 在线观看片免费人成视频无码| 亚洲欧洲精品久久| vvvv99日韩精品亚洲| 美丽姑娘免费观看在线观看中文版 | 国产成人无码a区在线观看视频免费| 一级一级一级毛片免费毛片| 久久亚洲精品中文字幕无码 | 免费一级做a爰片久久毛片潮喷|