Hibernate函数中的Oracle VARRAY

时间:2016-09-09 09:24:24

标签: spring oracle hibernate spring-boot

我有一个名为本机查询的Hibernate来访问oracle函数......

@NamedNativeQuery(
    name = "getProducts", 
    query = "{ ? = call prefix.get_products(:code, :productGroups) }", 
    callable = true, 
    resultClass = Product.class
)

不幸的是,productGroups的类型为VARRAYARRAYTYPENUMBER,数字为VARRAY)。对于正常的实体映射,我可以简单地创建一个UserType(在那里,完成它)并通过@Type映射,但最大的问题是......

如何将这条信息(“使用此UserType”)放入我的@NamedNativeQuery

编辑:我通过在我的实体中注册TypeDef来尝试...

@Entity
@NamedNativeQuery( ... see above ...)
@TypeDef(defaultForType = IdList.class, typeClass = ArrayUserType.class)
public class Product { 

...但不幸的是,这不起作用,因为ArrayUserType从未初始化并且从未使用过,即使我将IdList对象作为productGroups的参数查询。

同时通过(手动@Bean初始化)LocalSessionFactory.registerTypeOverride添加它不起作用,但我仍然只能给出键,没有默认的java类型。

1 个答案:

答案 0 :(得分:0)

您可以创建全局UserType转换器,而不仅仅是您的映射

{{1}}

这将应用于所有查询(包括本机sql)。只需传入一个合适的用户类型和密钥,就可以了解它。