不推荐使用的Hibernate.createClob(读卡器,int-length)的替代方案是什么

不推荐使用的Hibernate.createClob(读卡器,int-length)的替代方案是什么,hibernate,deprecated,clob,Hibernate,Deprecated,Clob,createClob(Reader-Reader,int-length)在3.6.x版中被弃用 它建议使用LobHelper.createClob(Reader,long) 但是LobHelper是一个接口而不是一个类 静态方法Hibernate.createClob(Reader Reader,int length)是否有替代方法?这是通过隐藏实现来简化使用的方法。如果要使用Clob数据,需要使用以下代码。我已经在hibernate3.6版本中测试了它 session.getLobHelper

createClob(Reader-Reader,int-length)在3.6.x版中被弃用 它建议使用
LobHelper.createClob(Reader,long)

但是
LobHelper
是一个接口而不是一个类


静态方法Hibernate.createClob(Reader Reader,int length)是否有替代方法?

这是通过隐藏实现来简化使用的方法。如果要使用
Clob
数据,需要使用以下代码。我已经在hibernate3.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;
/*      */   }

我找到了另一个很好的替代品, 使用java javax.sql.rowset.serial.SerialClob

比如说

Clob clob = new SerialClob("Some very long String.......".toCharArray());
我正在使用该类中的createBlob(bytes[])。我创建了一个新类和以下方法

    public static Blob createBlob(byte[] bytes) {
       return NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE.createBlob(bytes));
    }

谢谢马努的快速回答。但这需要获取或打开新的hibernate会话。有没有像弃用的Hibernate.createClob(Reader-Reader,int-length)这样的静态方法?大多数时候,当您创建一个Blob或Clob数据类型时,您希望它存储在数据库中。当您想要显示它时,您必须将其转换为字节[]或类似的内容。这就是为什么我相信它会被移动到会话内部。这是可能的,但是创建的Clob不能正常工作!例如,调用
yourClob.getascistream()
会引发SerialException:
不支持的操作。SerialClob无法将CLOB值作为ascii流返回,除非使用完全实现的CLOB对象进行实例化。
有关详细信息,请参阅SerialClob实现。