背景:
由于项目需要,我们在查询主信息时,可能需要通过某些明细信息来查找主信息.或者很多行转列中要用到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`函数,它的工作原理,以及如何在不支持它的新版本Oracle中实现类似的功能。 `WM_CONCAT`函数是Oracle 10g中引入的一个非标准聚合函数,它允许我们在查询中将多行数据合并为一个...
### Oracle 创建wm_concat函数 #### 知识点一:Oracle 10G及以下版本的wm_concat函数自定义实现 在Oracle 10G及更早版本中,并没有内置的`wm_concat`函数,该函数主要用于对一组字符串进行连接操作。为了在这些...
根据给定文件的信息,本文将深入探讨“wmsys_wm_concat函数结果拆解”的相关知识点,包括该函数的基本概念、应用场景以及SQL示例代码的详细解析。 ### wmsys_wm_concat函数简介 在Oracle数据库中,`wmsys.wm_...
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 ...
在Oracle数据库环境中,WMSYS.WM_CONCAT函数是一个用于字符串连接的实用工具,尤其在处理多值列时非常有用。然而,有时由于各种原因,这个函数可能丢失或损坏,需要进行重建。以下是对重建WMSYS.WM_CONCAT函数涉及的...
Oracle新版中不支持 WM_CONCAT的处理方法,直接创建一个自定义函数代替
为了解决这个问题,我们可以通过创建一个自定义的聚合函数来替代`WM_CONCAT`,并将其扩展到CLOB类型,以支持更大量的数据。CLOB(Character Large Object)是Oracle中的一个数据类型,用于存储大文本数据,理论上可...
在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但系统无法识别该函数,提示其为无效的标识符。WM_CONCAT是Oracle 10g及更早版本中用于字符串合并的...
Oracle从12C版本开始,不支持wm_concat函数,我们可以采取的办法有使用listagg函数代替wm_concat函数,或者为了减小修改程序的工作量,可以通过手工创建wm_concat函数来解决这个问题。
标题“解决Oracle没有WM_CONCAT函数”暗示了这个问题的背景:用户在尝试使用WM_CONCAT时遇到了问题,或者想要在不支持此函数的数据库环境中实现类似的功能。这可能是因为他们正在处理需要聚合多个字符串字段的查询,...
1. **数据库版本升级**:从旧版本升级到11gR2或更高版本后,WM_CONCAT不再受支持。 2. **查询或存储过程中的遗留代码**:可能有旧的SQL查询或PL/SQL代码仍然试图调用此函数。 3. **权限问题**:即使在旧版本中,非...
Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....
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"提供的解决方案旨在帮助Oracle数据库用户在不支持`WM_CONCAT`的环境中实现行数据的合并,利用`LISTAGG`等内置函数,提供了灵活且高效的数据处理方式。对于那些依赖`WM_...
是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备
3. **对象状态问题**:`WMSYS`模式中的对象可能由于某种原因(如数据库升级、误操作等)处于非正常状态,导致无法正确调用`WM_CONCAT`函数。 针对这种情况,描述中给出的解决方案是通过执行`owmctab.plb`、`...
解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...
这个类型用于定义一个聚合函数,其主要功能是将多个字符串连接成一个单一的字符串,并支持多种操作,如初始化、迭代和终止等。具体来说: 1. **初始化**: `ODCIAGGREGATEINITIALIZE`方法用于初始化`zh_concat_im`...
oracle 9i 实现wm_concat函数 进行一列多行合并,之间使用,分割
在Oracle数据库中,`wmsys.wm_concat`是一个非常实用且强大的函数,主要用于将多个字符串连接成一个字符串。此函数常用于数据聚合场景,尤其是当需要在一个查询中汇总特定分组下的所有值时。根据给定文件的信息,...