将 NHibernate 3.1 与 SQL Server 和 Oracle DB 一起使用,我们需要存储一个长度超过 4000 个字符的文本字符串。文本实际上是 XML,但这并不重要——我们只想将其视为原始文本。使用 SQL Server,这很容易。我们将该列声明为 NVARCHAR(MAX) 并因此映射它:
<property name="MyLongTextValue" length="100000"/>
长度属性的使用告诉 NHibernate 期望一个可能超过 4000 个字符的字符串。
对于我的一生,我无法弄清楚如何在 Oracle 11g 上进行这项工作。我尝试将列声明为 XMLTYPE 和 LONG 均未成功。在第一种情况下,我们最终得到ORA-01461:在尝试插入行时,只能为插入到 LONG 列中绑定 LONG 值。在第二种情况下,数据被正确插入,但在查询时返回为空字符串。
有谁知道如何使这项工作?答案必须与 SQL Server 和 Oracle 兼容。我宁愿不必编写自定义扩展,例如用户类型和驱动程序子类。谢谢。