PreparedStatment seems to have a feature that when setting a string that is over 4000
during execution it converts the string into NTEXT instead of VARCHAR leaving me with the exception:

java.sql.SQLException: [Microsoft][SQLServer JDBC Driver][SQLServer]Disallowed implicit conversion from data type ntext to data type varchar, table 'testDB.dbo.testtablex', column 'bigstringx'. Use the CONVERT function to run this query.
at com.microsoft.jdbc.base.BaseExceptions.createExcep tion(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getExceptio n(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.proces sErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.proces sReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.pro cessReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.proces sReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatemen t.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecut e(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeInter nal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.exec ute(Unknown Source)
at com.inventa.schema.Test.main(Test.java:71)

For example

PreparedStatement ps = conn.prepareStatement("insert into testtablex values(?)");
ps.setString(1, bigString);
ps.execute();

The column of the table I am trying to insert into is a VARCHAR(7500) .

if I insert it like this

PreparedStatement ps = conn.prepareStatement("insert into testtablex values(?)");
ps.setString(1, bigString.substring(0, 4000));
ps.execute();

it works and if I insert like this it works as well.

PreparedStatement ps = conn.prepareStatement("INSERT INTO testtablex VALUES (CONVERT(VARCHAR(7500), ?)");
ps.setString(1, bigString);
ps.execute();

Unfortunatly I am looking for a solution where I can change the behavior of the conversion of strings longer than 4000 to be VARCHAR for the PreparedStatement.

Has any one seen this problem or solved this problem without resorting to blobs or ntext?