`

Hibernate 支持wm_concat等函数

 
阅读更多
背景:由于项目需要,我们在查询主信息时,可能需要通过某些明细信息来查找主信息.或者很多行转列中要用到wmsys.wm_concat这个函数.
引用
主,明细结构:即一对多结构
比如:订单头,订单明细


实现方法:我们只需要将hibernate中使用的方言改成这个新建的类,这个类并继承oracle方言,在构造函数中加上我们数据库中的函数即可(也可以是自定义函数)

TmsOracle9Dialect.java

package com.vtradex.stms.server.service.dialect;
import org.hibernate.Hibernate;
import org.hibernate.dialect.Oracle9Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;

/**
 * @author  <a href="mailto:foohsinglong@gmail.com">kevin.long</a>
 * @description
 */
public class TmsOracle9Dialect extends Oracle9Dialect {
	
	public TmsOracle9Dialect(){
		super();
		registerFunction("wm_concat", new StandardSQLFunction("wm_concat", Hibernate.STRING));
	}
}


hibernate.properties

# $Id: hibernate.properties,v 1.13 2011/11/11 14:29:51 kevin.long Exp $

# (only applied with "dataSourceContext-hibernate.xml")
#hibernate.dialect=org.hibernate.dialect.MySQLDialect
#hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.dialect=com.vtradex.stms.server.service.dialect.TmsOracle9Dialect

#hibernate.default_schema=cjtms
hibernate.format_sql=true
hibernate.show_sql=false
hibernate.hbm2ddl.auto=none

hibernate.query.substitutions true=1, false=0
hibernate.max_fetch_depth=0
hibernate.jdbc.fetch_size=50
hibernate.jdbc.batch_size=25
hibernate.cglib.use_reflection_optimizer=true
hibernate.jdbc.use_scrollable_resultset=true
#hibernate.cache.provider_cache=org.hibernate.cache.EhCacheProvider
hibernate.cache.use_second_level_cache=false
hibernate.cache.use_query_cache=false




  • 大小: 25.8 KB
分享到:
评论

相关推荐

    wm_concat函数所需资源包

    在这里,我们将深入探讨`WM_CONCAT`函数,它的工作原理,以及如何在不支持它的新版本Oracle中实现类似的功能。 `WM_CONCAT`函数是Oracle 10g中引入的一个非标准聚合函数,它允许我们在查询中将多行数据合并为一个...

    oracle 创建wm_concat函数

    ### Oracle 创建wm_concat函数 #### 知识点一:Oracle 10G及以下版本的wm_concat函数自定义实现 在Oracle 10G及更早版本中,并没有内置的`wm_concat`函数,该函数主要用于对一组字符串进行连接操作。为了在这些...

    wmsys_wm_concat函数结果拆解

    根据给定文件的信息,本文将深入探讨“wmsys_wm_concat函数结果拆解”的相关知识点,包括该函数的基本概念、应用场景以及SQL示例代码的详细解析。 ### wmsys_wm_concat函数简介 在Oracle数据库中,`wmsys.wm_...

    wm_concat函数DDL.zip

    STATIC FUNCTION ODCIAGGTRANS(p acum WM_CONCAT_IMPL, p_val VARCHAR2) RETURN WM_CONCAT_IMPL, MEMBER FUNCTION ODCIFINALFUNC(pself IN OUT WM_CONCAT_IMPL) RETURN VARCHAR2 ); / CREATE OR REPLACE TYPE ...

    重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件

    在Oracle数据库环境中,WMSYS.WM_CONCAT函数是一个用于字符串连接的实用工具,尤其在处理多值列时非常有用。然而,有时由于各种原因,这个函数可能丢失或损坏,需要进行重建。以下是对重建WMSYS.WM_CONCAT函数涉及的...

    Oracle新版中不支持 WM_CONCAT的处理方法

    Oracle新版中不支持 WM_CONCAT的处理方法,直接创建一个自定义函数代替

    类似于wmsys.wm_concat的自定义函数clob版

    为了解决这个问题,我们可以通过创建一个自定义的聚合函数来替代`WM_CONCAT`,并将其扩展到CLOB类型,以支持更大量的数据。CLOB(Character Large Object)是Oracle中的一个数据类型,用于存储大文本数据,理论上可...

    ORA-00904: "WM_CONCAT": 标识符无效

    在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但系统无法识别该函数,提示其为无效的标识符。WM_CONCAT是Oracle 10g及更早版本中用于字符串合并的...

    12C开始_wm_concat函数.sql

    Oracle从12C版本开始,不支持wm_concat函数,我们可以采取的办法有使用listagg函数代替wm_concat函数,或者为了减小修改程序的工作量,可以通过手工创建wm_concat函数来解决这个问题。

    解决Oracle没有WM_CONCAT函数.zip

    标题“解决Oracle没有WM_CONCAT函数”暗示了这个问题的背景:用户在尝试使用WM_CONCAT时遇到了问题,或者想要在不支持此函数的数据库环境中实现类似的功能。这可能是因为他们正在处理需要聚合多个字符串字段的查询,...

    ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案

    1. **数据库版本升级**:从旧版本升级到11gR2或更高版本后,WM_CONCAT不再受支持。 2. **查询或存储过程中的遗留代码**:可能有旧的SQL查询或PL/SQL代码仍然试图调用此函数。 3. **权限问题**:即使在旧版本中,非...

    Oracle 11g 重建WMSYS.WM_CONCAT函数

    Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....

    Oracle没有WM_CONCAT函数的解决办法.rar

    1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:sqlplus -logon sys/123 as sysdba 3、执行@C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmaggrb.plb; 如果执行结果报错,说找不...

    自写函数用于替换wm_concat函数.zip

    总之,"自写函数用于替换wm_concat函数.zip"提供的解决方案旨在帮助Oracle数据库用户在不支持`WM_CONCAT`的环境中实现行数据的合并,利用`LISTAGG`等内置函数,提供了灵活且高效的数据处理方式。对于那些依赖`WM_...

    oracle替换wm_concat varchar处理为clob处理的方法

    是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数(更低分)

    3. **对象状态问题**:`WMSYS`模式中的对象可能由于某种原因(如数据库升级、误操作等)处于非正常状态,导致无法正确调用`WM_CONCAT`函数。 针对这种情况,描述中给出的解决方案是通过执行`owmctab.plb`、`...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数

    解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...

    重写oracle wm_contact函数

    这个类型用于定义一个聚合函数,其主要功能是将多个字符串连接成一个单一的字符串,并支持多种操作,如初始化、迭代和终止等。具体来说: 1. **初始化**: `ODCIAGGREGATEINITIALIZE`方法用于初始化`zh_concat_im`...

    oracle 9i 实现wm_concat函数

    oracle 9i 实现wm_concat函数 进行一列多行合并,之间使用,分割

    wmsys.wm_concat详细示例.txt

    在Oracle数据库中,`wmsys.wm_concat`是一个非常实用且强大的函数,主要用于将多个字符串连接成一个字符串。此函数常用于数据聚合场景,尤其是当需要在一个查询中汇总特定分组下的所有值时。根据给定文件的信息,...

Global site tag (gtag.js) - Google Analytics