我有一个MySql表的pk设置如下:
`id` int(10) unsigned NOT NULL auto_increment
我的ID的User.hbm.xml文件如下所示:
<id name="Id" type="int" column="id" unsaved-value="null">
<generator class="identity" />
</id>
我的User类的id属性如下所示,使用C#:
public virtual int Id { get; private set; }
以下是发生的事情:
如果我使用以下功能:
var user = Session.Get< User >(1);
但是,如果我将其更改为Native SQL,则会显示错误:“System.UInt32类型无法分配给Data.ccess32的类型为SystemAccess.Domain.User.Id的System.Int32 setter属性。” / p>
var user = Session
.CreateSQLQuery(@"SELECT id AS Id, login_name AS LoginName, first_name AS FirstName, last_name AS LastName FROM user WHERE id = :id")
.SetResultTransformer(Transformers
.AliasToBean<User>())
.SetInt32("id", 1)
.UniqueResult<User>();
我很困惑,有什么建议吗?这对UInt32
有意义,因为MySql表说unsigned
。所以我在我的类和映射文件中将其更改为uint
。然后,Native SQL按预期工作,但Session.Get<User>(1)
失败并显示错误:
Provided id of the wrong type. Expected: System.UInt32, got System.Int32".
由于