Hibernate> CLOB> Oracle :(

Hibernate> CLOB> Oracle :(,第1张

Hibernate> CLOB> Oracle :(

感谢非续集者的所有帮助。我已经完成了这项工作,并确定了所有内容,以备将来参考。不管所有关于升级驱动程序的主张,一切都会奏效,但对我而言,一切都不奏效。最后,我必须实现一个“
org.hibernate.usertype.UserType”,我将其命名为与Web
StringClobType上的所有示例相同。除了一些导入,我使用了“ 在Oracle和Hibernate中使用Clobs /
Blobs”中的示例。就我而言,请忽略“提防”声明。

为了使合并生效,我必须进行一项更改。所提供的代码示例中未实现某些方法。Eclipse通过暂存它们为我修复了它。很酷,但是replace方法实际上需要实现,否则所有合并将使用null覆盖数据。这是我的实现:

public Object replace(Object newValue, Object existingValue, Object arg2)throws HibernateException {    return newValue;}

我不会在这里重复类的实现,请转到上面的链接查看它。我在第三个灰色框中使用了代码。然后在pojo类的顶部,我想在导入后添加以下内容

...  import org.hibernate.annotations.Type;  import org.hibernate.annotations.TypeDefs;  import org.hibernate.annotations.TypeDef;@TypeDefs({      @TypeDef(          name="clob",          typeClass = foo.StringClobType.class      )  })  @Entity  @Table(name="EA_COMMENTS")  public class Comment extends SWDataObject implements JSONString, Serializable {  ...  }

然后,要使用新的UserType,我将注释添加到我的getter中:

@Type(type="clob")@Column(name="COMMENT_DOC")public String getdocument(){    return get("document");}

我不需要@Lob批注。
在我的persistence.xml中,持久性单元声明如下所示:

<persistence-unit name="###" transaction-type="RESOURCE_LOCAL">    <provider>org.hibernate.ejb.HibernatePersistence</provider>    <properties>        <property name="hibernate.archive.autodetection" value="class"/>         <property name="hibernate.connection.password" value="###" />        <property name="hibernate.connection.username" value="###" />        <property name="hibernate.connection.url" value="jdbc:oracle:thin:@server.something.com:1521:###"/>        <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>        <property name="hibernate.default_schema" value="###" />        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9iDialect" />        <property name="hibernate.c3p0.min_size" value="5" />        <property name="hibernate.c3p0.max_size" value="100" />        <property name="hibernate.c3p0.timeout" value="300" />        <property name="hibernate.c3p0.max_statements" value="50" />        <property name="hibernate.c3p0.idle_test period" value="3000" />        <property name="hibernate.c3p0.idle_connection_test_period" value="300" />        <property name="show_sql" value="false" />        <property name="format_sql" value="false" />        <property name="use_sql_comments" value="false" />        <property name="hibernate.jdbc.batch_size" value="0"/>    </properties></persistence-unit>

SetBigStringTryClob从来没有为我工作,并且此最终实现不需要它。

我吸取的教训是,最终加入战斗可能会更好。它将为我节省三天。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/4987770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存