我在使用包含oracle" xmlType"的hibernate实体填充单元测试数据集时遇到问题。属性。我们的模块使用Spring框架(不启动)
除了xmlType之外,一切正常,如果我将它们切换为简单的"列"所有的单元测试都通过了。
没有任何修改我得到了这个:
org.hibernate.MappingException: Could not determine type for: xmlType, at table: Message,
如果我将该属性添加到SessionFactory bean:
<property name="typeDefinitions">
<array>
<bean class="org.springframework.orm.hibernate3.TypeDefinitionBean">
<property name="typeClass"
value="ourcompanyname.commons.persistence.hibernate.types.OracleXmlType" />
<property name="typeName" value="xmlType" />
</bean>
</array>
</property>
我收到另一个错误:
org.hibernate.MappingException: No Dialect mapping for JDBC type: 2007
所以我尝试扩展HSQLDialect
public class CustomDialect extends HSQLDialect {
public CustomDialect() {
super();
registerColumnType(XMLType._SQL_TYPECODE, "xmlType");
}
}
这给了我另一个错误:
2018-02-06 15:25:38,487 [ ERROR ] [ SchemaUpdate ] - Unsuccessful: create table Message [sql create query]
2018-02-06 15:25:38,487 [ ERROR ] [ SchemaUpdate ] - type not found or user lacks privilege: XMLTYPE
我不知道这里可能出现什么问题,我们的列定义如下
@org.hibernate.annotations.Type(type = "xmlType")
private String content;
答案 0 :(得分:0)
我的错误我的映射只是错误的registerColumnType(oracle.xdb.XMLType._SQL_TYPECODE,&#34; clob&#34;); registerHibernateType(oracle.xdb.XMLType._SQL_TYPECODE,&#34; clob&#34;);在customDialect解决了它...