惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
博客园 - 司徒正美
P
Privacy International News Feed
G
Google Developers Blog
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
K
Kaspersky official blog
I
InfoQ
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Webroot Blog
Webroot Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
量子位
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
S
Security Affairs
Latest news
Latest news
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
S
Security Archives - TechRepublic
V
Visual Studio Blog
T
Troy Hunt's Blog
S
Secure Thoughts
F
Fortinet All Blogs
V
V2EX
The Register - Security
The Register - Security
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - FrankFei

创采人力资源管理软件--产品简介 创采e-HR荣获江苏省高新技术产品认定 个人经典收藏网址 创采人事档案管理系统(ASP.NET+ExtJS) 创采应用框架开发平台--CFrame 创采人事管理软件--分布式的人力资源管理解决方案 创采e-HR合作经营 创采人事管理软件 创采人力资源管理系统 使用.Net和ExtJS技术开发的人力资源管理系统 ObjectBuilder中WeakRefDictionary使用模式浅析 ObjectBuilder应用之TypeMappingPolicy、SingletonPolicy ObjectBuilder中IBuilderPolicy和IBuilderStrategy之区别 ObjectBuilder模式浅析 优化GridView的查询、翻页性能 名言警句 折叠内容 [转]NUnit2.0详细使用方法 设计模式--Prototype
NHibernate连接多数据库字符定义问题
FrankFei · 2007-07-30 · via 博客园 - FrankFei

在用NHibernate1.2.0.GA版本中自带的NHibernate.Examples-2.0下的QuickStart测试连接Oracle数据库时,一直提示:System.Data.OracleClient.OracleException : ORA-12704: character set mismatch,但如果改成连接SqlServer数据库,一切OK。

Config文件中的配置如下:

<nhibernate>
    
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
    
<add key="hibernate.dialect" value="NHibernate.Dialect.OracleDialect" />
    
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleClientDriver" />
    
<add key="hibernate.connection.connection_string" value="Data Source=dev;User ID=hcp;Password=hcp;" />
  
</nhibernate>


User.hbm.xml文件中的配置如下:

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

 

  
<class name="NHibernateTest.User,NHibernateTest" table="users" lazy="false">

    
<id name="Id" column="LogonId" type="String" length="128">

      
<generator class="assigned" />

    
</id>

 

    
<property name="UserName" column="Name" type="String" length="128"/>

    
<property name="Password" type="String" length="128"/>

    
<property name="EmailAddress" type="String" length="128"/>

    
<property name="LastLogon" type="DateTime"/>

  
</class>

 

</hibernate-mapping>

在网上找了很久也没有找到这方面的错误信息,后来我查看了NHibernate的源码,在Type下发现了另外一种类型:AnsiString,这让我立即想起在使用Castle连接Oracle时,是使用的AnsiString类型,故把User.hbm.xml改成如下:

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

 

  
<class name="NHibernateTest.User,NHibernateTest" table="users" lazy="false">

    
<id name="Id" column="LogonId" type="AnsiString" length="128">

      
<generator class="assigned" />

    
</id>

 

    
<property name="UserName" column="Name" type="AnsiString" length="128"/>

    
<property name="Password" type="AnsiString" length="128"/>

    
<property name="EmailAddress" type="AnsiString" length="128"/>

    
<property name="LastLogon" type="DateTime"/>

  
</class>

 

</hibernate-mapping>

 

用NUnit测试,立即成功。

问题虽然已经解决,但我又想到另外一个问题,因为在使用NHibernate时,每一个实体类都对应一个*.hbm.xml,那在开发支持多数据库应用时,字符类型不就会出现在使用SqlServer 时使用String类型,在使用Oracle时使用AnsiString了吗?不知道这个问题大家是如何解决的,请高人指点,先谢了!