XMLType(oracle),在内存HSQL数据库和Spring框架中进行单元测试

时间:2018-02-06 14:48:47

标签: java spring oracle hibernate unit-testing

我在使用包含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;

1 个答案:

答案 0 :(得分:0)

我的错误我的映射只是错误的registerColumnType(oracle.xdb.XMLType._SQL_TYPECODE,&#34; clob&#34;); registerHibernateType(oracle.xdb.XMLType._SQL_TYPECODE,&#34; clob&#34;);在customDialect解决了它...