在版本3.6.x中不推荐使用Hibernate.createClob(Reader reader, int length)
它建议使用Use LobHelper.createClob(Reader, long)
代替。
但是LobHelper
是一个不是类的接口。
static method Hibernate.createClob(Reader reader, int length)
还有替补吗?
答案 0 :(得分:5)
我正在使用该类的createBlob(bytes [])。我创建了一个新类和以下方法
public static Blob createBlob(byte[] bytes) {
return NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE.createBlob(bytes));
}
答案 1 :(得分:4)
这是通过隐藏实现来简化使用的方法。如果您想使用Clob
数据,则需要使用以下代码。我已在版本hibernate 3.6
中对其进行了测试。
session.getLobHelper().createClob("the_string");
现在提出关于它的工作的第二点,如果你阅读org.hibernate.impl.SessionImpl
类的源代码,你就会知道内部hibernate如何处理它。
public LobHelper getLobHelper()
/* */ {
/* 2245 */ if (this.lobHelper == null) {
/* 2246 */ this.lobHelper = new LobHelperImpl(this, null);
/* */ }
/* 2248 */ return this.lobHelper;
/* */ }
答案 2 :(得分:0)
我找到了另一个好的替代品, 使用java javax.sql.rowset.serial.SerialClob
例如
Clob clob = new SerialClob("Some very long String.......".toCharArray());