- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个实体类,其字段声明为:
@NotNull
@Lob
private String xmlString;
现在我必须保持与Oracle和PostgreSQL的兼容性。 DDL 中相应的列定义是 xmlString clob
和 xmlString text
。该应用程序运行良好,只有 PostgreSQL 存在一个问题:xmlString
列中存储的值是 long object 类型,而不是原始 xml字符串。
按照建议here添加 @Type(type="org.hibernate.type.MaterializedClobType")
,它提供与 Oracle 和 PostgreSQL 的兼容性,但即使在添加之后此注释存储在PostgreSQL中的值是长对象而不是原始的xml字符串。
我所做的改变:
@NotNull
@Lob
@org.hibernate.annotations.Type(type = "org.hibernate.type.MaterializedClobType")
private String xmlMessage;
存储在xmlString
中的值是一个数字,似乎是长对象的引用ID。
是否有可能在 Oracle 和 PostgreSQL 上实现此功能?
<小时/>如果我将注释更改为 @org.hibernate.annotations.Type(type = "org.hibernate.type.TextType")
,它在 PostgreSQL 中运行良好,但是然后 Oracle 上的架构验证失败。
最佳答案
为了解决这个问题,我通过扩展 org.hibernate.dialect.PostgreSQL9Dialect
并覆盖 remapSqlTypeDescriptor
创建了自定义方言,如下所示:
@Override
public SqlTypeDescriptor remapSqlTypeDescriptor(SqlTypeDescriptor sqlTypeDescriptor)
{
if (sqlTypeDescriptor.getSqlType() == Types.CLOB)
{
log.debug("remapping CLOB to LongVarchar");
return LongVarcharTypeDescriptor.INSTANCE;
}
return super.remapSqlTypeDescriptor(sqlTypeDescriptor);
}
有了这个,我不需要通过
注释我的实体字段@org.hibernate.annotations.Type(type = "org.hibernate.type.MaterializedClobType")
关于java - hibernate MaterializedClobType 存储长对象而不是文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61678474/
我有一个实体类,其字段声明为: @NotNull @Lob private String xmlString; 现在我必须保持与Oracle和PostgreSQL的兼容性。 D
我是一名优秀的程序员,十分优秀!