The SQL Server data type ntext supports 1,073,741,823 unicode characters. I'm guessing something is treating your ntext as an nvarchar data type (since 4000 characters is that datatype's limit) Not likely to be whatever ORM framework your are using, since Strings are all that will deal with. [ October 10, 2008: Message edited by: Paul Sturrock ]
Can you change the data type? As of SQL Server 2005 ntext support is being discontinued by Microsoft in favour of nvarchar(). Might be an easy way to fix it.
That a side, the WRITETEXT function shouldn't be truncating the data. You might try sticking a break point in the Hibernate code where the value is bound, see what data finds its way into this. WHich JDBC driver are you using?