CN103870555A - Spring data JPA实现动态查询的方法 - Google Patents
Spring data JPA实现动态查询的方法 Download PDFInfo
- Publication number
- CN103870555A CN103870555A CN201410077357.XA CN201410077357A CN103870555A CN 103870555 A CN103870555 A CN 103870555A CN 201410077357 A CN201410077357 A CN 201410077357A CN 103870555 A CN103870555 A CN 103870555A
- Authority
- CN
- China
- Prior art keywords
- dynamic
- jpa
- statement
- interface method
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种Spring data JPA实现动态查询的方法,其中包括采用基于Spring FactoryBean创建的动态查询确认类判断被调用的接口方法是否需要进行动态查询;采用基于Spring FactoryBean创建的动态JPA查询类创建动态查询语句;所述的动态JPA查询类将所述的动态查询语句发送至JPA框架;所述的动态JPA查询类将JPA框架的查询结果转换成指定类型的返回对象。采用该种Spring data JPA实现动态查询的方法,能够实现只需要进行接口方法定义声明,而无需进行任何实际编码逻辑的实现,如果以后页面查询的需求发生变化,只需要在相应的VO类中增加或者修改属性、注解即可,大大减轻了开发人员的负担,降低了进行页面查询开发出错的可能性,增强了软件的维护性,提高了软件开发的生产力,具有更广泛的应用范围。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及动态查询领域,具体是指一种Spring data JPA实现动态查询的方法。
背景技术
Spring data JPA是指一种Spring数据持久化架构,是Spring(一个开源框架,为了解决企业应用程序开发复杂性而创建)基于ORM(Object/Relation Mapping,对象关系映射)框架、JPA(Java Persistence API,存取Java关系数据的企业级标准,JPA通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中)规范的基础上封装的一套JPA应用框架,是一种企业级Java的现代数据访问技术,该技术较完美地将Spring的易用性和JPA的强大数据访问功能结合起来,开发者在使用Spring data(是一个用于简化数据库访问,并支持云服务的开源框架,针对关系型数据库、KV数据库、Document数据库、Graph数据库、Map-Reduce等一些主流数据库,采用统一技术进行访问,并且尽可能简化访问手段的技术)时,连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给Spring Data JPA来帮你完成!
但是Spring data JPA还是有美中不足的地方,就是缺少对动态查询功能。在Spring data中,无论是命名查询还是约定查询,无论你传递的参数是否为空,框架给你构造的查询条件都是一样的。
但是在实际应用中,很多场景都是需要进行动态查询的,尤其是页面查询功能。在开发Web应用时,页面中会有一系列的查询条件,如果你输入了查询值,就要把该条件加入到查询语句中,否则,忽略该条件。
如果使用传统技术来进行编程,无论使用Hibernate(一种开放源代码的对象关系映射框架)还是JDBC(Java Data Base Connectivity,Java数据库连接),都需要写大量的逻辑来对查询条件进行判断,并且还要根据返回对象的属性从查询结果中取值、转换。编程不仅繁琐易错,而且后续的可维护性也不强。不具备通用性和灵活性。
Mybatis3(支持普通SQL查询、存储过程和高级映射的优秀持久层框架)中比较强大的 功能之一就是动态SQL(Structured Query Language,结构化查询语言)语句,类似于脚本语句一样动态进行SQL语句的配置,可以解决这类问题。但是一来这个需要使用Xml来进行配置,并且还是需要写比较复杂的脚本,另外整个编程要使用Mybatis的架构,对于使用hibernate或者JPA架构的开发团队是不适用的。
发明内容
本发明的目的是克服了上述现有技术的缺点,提供了一种能够实现只需要进行接口方法定义声明、而无需进行任何实际编码逻辑的实现、增强软件的维护性、提高软件开发的生产力、具有更广泛应用范围的Spring data JPA实现动态查询的方法。
为了实现上述目的,本发明的Spring data JPA实现动态查询的方法具有如下构成:
该Spring data JPA实现动态查询的方法,其主要特点是,所述的方法包括以下步骤:
(1)采用基于Spring FactoryBean创建的动态查询确认类判断被调用的接口方法是否需要进行动态查询,如果是,则继续步骤(3),否则,继续步骤(2);
(2)采用原Spring data框架处理该被调用的接口方法,然后结束退出;
(3)采用基于Spring FactoryBean创建的动态JPA查询类创建动态查询语句;
(4)所述的动态JPA查询类将所述的动态查询语句发送至JPA框架;
(5)所述的动态JPA查询类将JPA框架的查询结果转换成指定类型的返回对象。
较佳地,所述的判断被调用的接口方法是否需要进行动态查询,具体为:
判断被调用的接口方法是否进行了动态JPA查询类的注解。
较佳地,所述的动态JPA查询类创建动态查询语句,具体为:
(31)所述的动态JPA查询类根据接口方法中的参数定义以及进行接口方法调用的实际传递参数值创建动态查询语句中的条件语句。
更佳地,所述的根据接口方法中的参数定义以及进行接口方法调用的实际传递参数值创建动态查询语句中的条件语句,包括以下步骤:
(311)判断所述的接口方法的实际传递参数值是否为空值,如果是,则继续步骤(312),否则继续步骤(315);
(312)判断该实际传递参数是否有默认值,如果是,则继续步骤(313),否则继续步骤(314);
(313)将该默认值的条件加入到动态查询语句中的条件语句中;
(314)将该实际传递参数对应的查询条件忽略;
(315)判断该接口方法中是否有该实际传递参数的动态注解定义,如果是,则继续步骤(316);
(316)将该接口方法的条件加入到动态查询语句中的条件语句中。
更佳地,所述的步骤(31)和(4)之间,还包括以下步骤:
(32)所述的动态JPA查询类根据接口方法中定义的JPA查询结果返回类型创建动态查询语句中的选择部分。
更进一步地,所述的动态JPA查询类将JPA框架的查询结果转换成指定类型的返回对象,具体为:
所述的动态JPA查询类根据接口方法中定义的JPA查询结果返回类型将JPA框架的查询结果转换成指定类型的POJO对象。
更佳地,所述的步骤(31)和(4)之间,还包括以下步骤:
(33)所述的动态JPA查询类根据接口方法定义中是否有Pageable或Sort类型的参数以及对应的实际传递参数值是否为空对动态查询语句中的条件语句进行排序。
采用了该发明中的Spring data JPA实现动态查询的方法,具有如下有益效果:
通过使用Spring data的动态查询扩展,在进行页面查询时,只需要对查询结果的VO类、查询条件的VO类进行一些必要的注解,再在接口中进行方法的声明就可以了。如果以后页面查询的需求发生变化,无论是查询条件、排序条件或者返回结果发生变化,只需要在相应的VO类中增加或者修改属性、注解即可。大大减轻了开发人员的负担,降低了进行页面查询开发出错的可能性,增强了软件的维护性,提高了软件开发的生产力。同时也增强了代码的可阅读性、可理解性(因为没有复杂的逻辑),具有更广泛的应用范围。
附图说明
图1为本发明的Spring data JPA实现动态查询的方法的流程图。
图2为本发明的Spring data JPA实现动态查询的方法应用于实施例的详细流程图。
具体实施方式
为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
本技术是对Spring data JPA技术的扩展,使其能够根据传递查询参数和返回对象的特性动态构造查询语句,并动态返回POJO(plain old java object,简单的Java对象)对象集合。
本技术主要就是为了解决在Web开发中常见的页面查询问题,对Spring data的框架进行了扩展,使其可以根据查询参数以及返回对象的特性动态构造查询语句,并且将查询到的数 据动态地封装到返回结果对象中。该技术完美地融合到Spring data框架中,同样只需要进行接口方法定义声明,而不需要进行任何实际编码逻辑的实现。
Spring data JPA之所以能够做到只需要进行接口声明而不需要写任何逻辑代码,是使用了Spring的FactoryBean技术,对接口的调用动态生成代理类,在代理类中根据接口中的注解进行解析、转换,最终将请求转发给JPA框架。
如图1所示,要使Spring data能够进行动态查询,首先需要对JPARepositoryFactoryBean类进行扩展。当调用定义的接口方法时,扩展的FactoryBean类首先创建一个DelegeatedQueryLookupStrategy实例(动态查询确认类)。该实例首先判断接口方法是否需要进行动态查询,如果不是动态查询的方法,则由原来的Spring data框架来进行处理;如果是动态查询方法,则创建一个DynamicJPAQuery对象实例(动态JPA查询类),由该实例来完成动态创建SQL语句(动态查询语句)并将JPA的查询结果转换成指定的POJO类对象。
判断一个接口方法是否是动态查询也很简单,就看该方法是否进行了DynamicQuery的注解(Annonation)。DynamicJPAQuery类会根据接口方法中的参数定义以及进行方法调用的实际传递参数值进行SQL语句中的条件语句的动态创建。如果传递的实际参数值不为null,并且方法中有该参数的动态注解定义,就将该条件加入到查询语句中(如果该参数在方法定义中没有动态注解定义,则表示该参数不参与SQL语句的构建,该参数值会被忽略掉)。如果传递的值为null,则看该参数的动态注解是否有默认值,如果有默认值,则将默认值的条件加入到查询语句中,否则则将该参数对应的查询条件忽略掉。
如果方法接口中定义的返回类型不是JPA的entity类型,则可以根据返回类型的类注解定义动态构建SQL语句中的select部分,并且可以支持比较复杂的统计语句和子查询语句。
另外DynamicJPAQuery还能够动态地构建查询语句中的排序功能,主要是根据方法定义中是否有Pageable或者Sort类型的参数以及传递的实际参数是否为空来进行动态构建。
该扩展因为完全在Spring data JPA的框架下进行开发的,因此与该框架的融合非常紧密,完全支持Spring data JPA的高级特性,例如可以使用query hint来使动态查询支持cache、transaction等特性。
我们在实现时还采用了约定优于配置(convention over configuration)的软件开发方法。该方法也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。例如我们会根据接口定义的返回值类型来进行一系列的约定开发。
如果返回的实体类(entity),则使用JPA Query方法进行调用,如果返回的是一个自定义 的VO类,则使用JPA native Query(本地查询)来进行查询。
如果返回类型是List<?>类型,则只是简单将返回结果转换为一个列表。
如果返回的类型是Page<?>类型,则表示客户既关心查询结果,又关心查询数量,即我们通常意义上所说的分页查询。框架会自动构建查询总数的SQL语句,并且将查询的总数信息封装到Page对象中。但是同时也要求在参数列表中需要有Pagable类型的参数。
如图2所示,下面是本发明的方法在具体实施例中的应用。
1、Spring配置:
<JPA:repositories base-package=″com.certus.dao.hibernate.query.sample″factory-class=″com.certus.dao.hibernate.spring.QueryRepositoryFactoryBean″/>
其中的QueryRepositoryFactoryBean是对于Spring factoryBean类进行的扩展,使其能对定义动态查询的DAO接口进行拦截
2、定义查询结果VO:
3、定义查询条件VO类:
4、定义DAO(Data Access Object,数据访问对象)接口:
5、Service类使用DAO:
采用了该发明中的Spring data JPA实现动态查询的方法,具有如下有益效果:
通过使用Spring data的动态查询扩展,在进行页面查询时,只需要对查询结果的VO类、查询条件的VO类进行一些必要的注解,再在接口中进行方法的声明就可以了。如果以后页面查询的需求发生变化,无论是查询条件、排序条件或者返回结果发生变化,只需要在相应的VO类中增加或者修改属性、注解即可。大大减轻了开发人员的负担,降低了进行页面查询开发出错的可能性,增强了软件的维护性,提高了软件开发的生产力。同时也增强了代码的可阅读性、可理解性(因为没有复杂的逻辑),具有更广泛的应用范围。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
Claims (7)
1.一种Spring data JPA实现动态查询的方法,其特征在于,所述的方法包括以下步骤:
(1)采用基于Spring FactoryBean创建的动态查询确认类判断被调用的接口方法是否需要进行动态查询,如果是,则继续步骤(3),否则,继续步骤(2);
(2)采用原Spring data框架处理该被调用的接口方法,然后结束退出;
(3)采用基于Spring FactoryBean创建的动态JPA查询类创建动态查询语句;
(4)所述的动态JPA查询类将所述的动态查询语句发送至JPA框架;
(5)所述的动态JPA查询类将JPA框架的查询结果转换成指定类型的返回对象。
2.根据权利要求1所述的Spring data JPA实现动态查询的方法,其特征在于,所述的判断被调用的接口方法是否需要进行动态查询,具体为:
判断被调用的接口方法是否进行了动态JPA查询类的注解。
3.根据权利要求1所述的Spring data JPA实现动态查询的方法,其特征在于,所述的动态JPA查询类创建动态查询语句,具体为:
(31)所述的动态JPA查询类根据接口方法中的参数定义以及进行接口方法调用的实际传递参数值创建动态查询语句中的条件语句。
4.根据权利要求3所述的Spring data JPA实现动态查询的方法,其特征在于,所述的根据接口方法中的参数定义以及进行接口方法调用的实际传递参数值创建动态查询语句中的条件语句,包括以下步骤:
(311)判断所述的接口方法的实际传递参数值是否为空值,如果是,则继续步骤(312),否则继续步骤(315);
(312)判断该实际传递参数是否有默认值,如果是,则继续步骤(313),否则继续步骤(314);
(313)将该默认值的条件加入到动态查询语句中的条件语句中;
(314)将该实际传递参数对应的查询条件忽略;
(315)判断该接口方法中是否有该实际传递参数的动态注解定义,如果是,则继续步骤(316);
(316)将该接口方法的条件加入到动态查询语句中的条件语句中。
5.根据权利要求3所述的Spring data JPA实现动态查询的方法,其特征在于,所述的步骤(31)和(4)之间,还包括以下步骤:
(32)所述的动态JPA查询类根据接口方法中定义的JPA查询结果返回类型创建动态查询语句中的选择部分。
6.根据权利要求5所述的Spring data JPA实现动态查询的方法,其特征在于,所述的动态JPA查询类将JPA框架的查询结果转换成指定类型的返回对象,具体为:
所述的动态JPA查询类根据接口方法中定义的JPA查询结果返回类型将JPA框架的查询结果转换成指定类型的POJO对象。
7.根据权利要求3所述的Spring data JPA实现动态查询的方法,其特征在于,所述的步骤(31)和(4)之间,还包括以下步骤:
(33)所述的动态JPA查询类根据接口方法定义中是否有Pageable或Sort类型的参数以及对应的实际传递参数值是否为空对动态查询语句中的条件语句进行排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410077357.XA CN103870555A (zh) | 2014-03-04 | 2014-03-04 | Spring data JPA实现动态查询的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410077357.XA CN103870555A (zh) | 2014-03-04 | 2014-03-04 | Spring data JPA实现动态查询的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103870555A true CN103870555A (zh) | 2014-06-18 |
Family
ID=50909085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410077357.XA Pending CN103870555A (zh) | 2014-03-04 | 2014-03-04 | Spring data JPA实现动态查询的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870555A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677326A (zh) * | 2015-12-28 | 2016-06-15 | 国云科技股份有限公司 | 一种软件接口参数验证方法 |
CN106528215A (zh) * | 2016-10-25 | 2017-03-22 | 广东亿迅科技有限公司 | 基于java的动态加载命令的方法及装置 |
CN106933564A (zh) * | 2015-12-31 | 2017-07-07 | 远光软件股份有限公司 | 通过Fitler模型及注解扩展实现ECP平台数据访问的查询方法 |
CN107633089A (zh) * | 2017-09-29 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种基于可信管理平台的最新可信动态的获取方法 |
CN108845793A (zh) * | 2018-05-03 | 2018-11-20 | 蔡廷超 | 一种orm设计方法及装置 |
CN110399125A (zh) * | 2019-07-25 | 2019-11-01 | 南京数睿数据科技有限公司 | 一种基于Java技术的多维度多条件的动态查询方法 |
CN110674200A (zh) * | 2019-09-17 | 2020-01-10 | 南京紫津融畅信息科技服务有限公司 | 一种基于注解的数据查询方法、数据查询设备及存储介质 |
CN111241130A (zh) * | 2019-12-29 | 2020-06-05 | 航天信息股份有限公司 | 一种基于sql语言的语法语句的扩展方法及系统 |
CN111324803A (zh) * | 2020-02-11 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 搜索引擎的查询请求处理方法、装置及客户端 |
CN111966704A (zh) * | 2020-07-09 | 2020-11-20 | 杭州传化智能制造科技有限公司 | Orm框架实现方法、系统、计算机设备和存储介质 |
CN112433708A (zh) * | 2020-12-01 | 2021-03-02 | 四川长虹电器股份有限公司 | 提高jpa标准查询编码效率的方法 |
CN113157726A (zh) * | 2021-04-25 | 2021-07-23 | 中化石化销售有限公司 | 一种数据库的处理方法及装置 |
CN113568924A (zh) * | 2021-07-23 | 2021-10-29 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
-
2014
- 2014-03-04 CN CN201410077357.XA patent/CN103870555A/zh active Pending
Non-Patent Citations (1)
Title |
---|
刺猬的温驯: "Spring Data JPA教程, 第三部分: Custom Queries with Query Methods", 《博客园》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677326B (zh) * | 2015-12-28 | 2019-03-22 | 国云科技股份有限公司 | 一种软件接口参数验证方法 |
CN105677326A (zh) * | 2015-12-28 | 2016-06-15 | 国云科技股份有限公司 | 一种软件接口参数验证方法 |
CN106933564A (zh) * | 2015-12-31 | 2017-07-07 | 远光软件股份有限公司 | 通过Fitler模型及注解扩展实现ECP平台数据访问的查询方法 |
CN106528215A (zh) * | 2016-10-25 | 2017-03-22 | 广东亿迅科技有限公司 | 基于java的动态加载命令的方法及装置 |
CN107633089A (zh) * | 2017-09-29 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种基于可信管理平台的最新可信动态的获取方法 |
CN108845793B (zh) * | 2018-05-03 | 2022-04-15 | 蔡廷超 | 一种orm设计方法及装置 |
CN108845793A (zh) * | 2018-05-03 | 2018-11-20 | 蔡廷超 | 一种orm设计方法及装置 |
CN110399125A (zh) * | 2019-07-25 | 2019-11-01 | 南京数睿数据科技有限公司 | 一种基于Java技术的多维度多条件的动态查询方法 |
CN110674200A (zh) * | 2019-09-17 | 2020-01-10 | 南京紫津融畅信息科技服务有限公司 | 一种基于注解的数据查询方法、数据查询设备及存储介质 |
CN111241130A (zh) * | 2019-12-29 | 2020-06-05 | 航天信息股份有限公司 | 一种基于sql语言的语法语句的扩展方法及系统 |
CN111241130B (zh) * | 2019-12-29 | 2024-05-28 | 航天信息股份有限公司 | 一种基于sql语言的语法语句的扩展方法及系统 |
CN111324803A (zh) * | 2020-02-11 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 搜索引擎的查询请求处理方法、装置及客户端 |
CN111324803B (zh) * | 2020-02-11 | 2024-01-02 | 支付宝(杭州)信息技术有限公司 | 搜索引擎的查询请求处理方法、装置及客户端 |
CN111966704A (zh) * | 2020-07-09 | 2020-11-20 | 杭州传化智能制造科技有限公司 | Orm框架实现方法、系统、计算机设备和存储介质 |
CN112433708B (zh) * | 2020-12-01 | 2021-12-21 | 四川长虹电器股份有限公司 | 提高jpa标准查询编码效率的方法 |
CN112433708A (zh) * | 2020-12-01 | 2021-03-02 | 四川长虹电器股份有限公司 | 提高jpa标准查询编码效率的方法 |
CN113157726A (zh) * | 2021-04-25 | 2021-07-23 | 中化石化销售有限公司 | 一种数据库的处理方法及装置 |
CN113157726B (zh) * | 2021-04-25 | 2024-05-03 | 中化石化销售有限公司 | 一种数据库的处理方法及装置 |
CN113568924A (zh) * | 2021-07-23 | 2021-10-29 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113568924B (zh) * | 2021-07-23 | 2024-05-14 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870555A (zh) | Spring data JPA实现动态查询的方法 | |
US8751437B2 (en) | Single persistence implementation of business objects | |
US9146955B2 (en) | In-memory, columnar database multidimensional analytical view integration | |
US8209710B2 (en) | Implementation system for business applications | |
EP2199904B1 (en) | Flexible multi-tenant support of metadata extensions | |
US8874551B2 (en) | Data relations and queries across distributed data sources | |
CN109087004B (zh) | 一种基于领域模型的公共工作流引擎系统 | |
US7971145B2 (en) | Systems and methods for adapting service interface behaviors | |
US9898263B2 (en) | System and method for resource-definition-oriented software generation and development | |
US20130325793A1 (en) | Easy Query | |
US10929122B1 (en) | Modifying program modules in running applications | |
US7877397B2 (en) | Extensible command execution for entity data model platform | |
CN110764752B (zh) | 实现Restful服务图形化服务编排的系统及其方法 | |
US9053134B2 (en) | View variants in database schema mapping | |
US20140181004A1 (en) | Common Framework for Definition, Generation, and Management of Metadata Runtime-Loads | |
US11893026B2 (en) | Advanced multiprovider optimization | |
CN101236503A (zh) | 一种热部署实体类组件 | |
US20150356131A1 (en) | Accessing an external table in parallel to execute a query | |
US8868597B2 (en) | Directory server processing requests based on hierarchical models while using backend servers operating based on relational models | |
Islamovna | Situation-oriented databases: document management on the base of embedded dynamic model | |
CN103152433A (zh) | 一种分布式服务端框架及其使用、交互、请求处理方法 | |
CN103425793B (zh) | 用于即时通讯系统中利用数据库存储层访问数据库的方法 | |
US9632837B2 (en) | Systems and methods for system consolidation | |
US8694559B2 (en) | Using database content for multiple business data systems connected to one database | |
EP2203813A2 (en) | Declarative model interpretation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140618 |