Fluently NHibernate 插入CLOB字段

ORA-01461: can bind a LONG value only for insert into a LONG column

插入oracle某表时报的错。

查来查去,是插入的某个字段值超长。怎么会超长呢?一个CLOB类型的字段,号称有4G容量的。

表设计:
这里写图片描述

我用的是Fluently NHibernate,for .net。实体类及映射如下:

    public class CatchResultContent
    {
        public virtual int CatchResultContentId { get; set; }
        public virtual int CatchResultId { get; set; }
        public virtual string Content { get; set; }
    }
    public CatchResultContentMap()
    {
        Table("CatchResultContent"); 
        Id(s => s.CatchResultContentId).GeneratedBy.Sequence("SEQ_CatchResultContent"); 
        Map(s => s.CatchResultId);
        Map(s => s.Content);
    }

真正到数据库执行的是如下语句:

INSERT INTO CatchResultContent (CatchResultId, Content, CatchResultContentId) VALUES (?,?,?);

可能是这条SQL语句中,Content作为字符串输入,整条SQL超过4000,所以超长了?不清楚。

后来是酱紫搞定的。关键在映射这里:

    public CatchResultContentMap()
    {
。。。
        Map(s => s.Content).CustomSqlType("Clob").CustomType("StringClob");
    }

有老外给出的资料说是这样:

Map(s => s.Content).CustomSqlType("Clob");

其实还不够的。

=======================================
以上答案,似乎只能在 FluentNHibernate 1.3 + NHibernate4.0 里受支持,换成FluentNHibernate2.0或以上,就无效了,本人还不知道如何解决。

转载于:https://www.cnblogs.com/leftfist/p/6808702.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值