PROCEDURE:
CREATE OR REPLACE PROCEDURE HTCHR.copy_BonusDept_From_HRM (
orgid in number,bonusorgid in number,hrmtype in number) is
BEGIN
delete from HTCHR.BONUSDEPARTMENT b where B.BONUSORGANIZATION_ID = bonusorgid;
insert into HTCHR.BONUSDEPARTMENT b (
B.ID,
B.CODE,B.FULLNAME,B.SHORTNAME,B.ENGLISHNAME,B.REPEALED,B.DEPTLEVEL,B.PLDEPT,B.ATTRIBUTE,
--B.MAINMANAGER_ID,
B.BONUSORGANIZATION_ID,
B.ADMINPARENT_ID
)
select
concat(bonusorgid,'*'||D.id),
D.CODE,D.FULLNAME,D.SHORTNAME,D.ENGLISHNAME,D.REPEALED,D.DEPTLEVEL,D.PLDEPT,D.ATTRIBUTE,
replace(D.ORGANIZATION_ID,D.ORGANIZATION_ID,bonusorgid),
--D.MAINMANAGER_ID,
case hrmtype
when 1
--DLine1
then
case
when D.DOTTEDONEPARENT_ID is not null
then
concat(bonusorgid,'*'||D.DOTTEDONEPARENT_ID)
else concat('',D.DOTTEDONEPARENT_ID)
end
when 2
--DLine2
then
case
when D.DOTTEDTWOPARENT_ID is not null
then
concat(bonusorgid,'*'||D.DOTTEDTWOPARENT_ID)
else concat('',D.DOTTEDTWOPARENT_ID)
end
when 3
--SLine
then
case
when D.SOLIDPARENT_ID is not null
then
concat(bonusorgid,'*'||D.SOLIDPARENT_ID)
else concat('',D.SOLIDPARENT_ID)
end
else
--行政
case
when D.ADMINPARENT_ID is not null
then
concat(bonusorgid,'*'||D.ADMINPARENT_ID)
else concat('',D.ADMINPARENT_ID)
end
end
from HTCHR.DEPARTMENT d where d.ORGANIZATION_ID = orgid;
end;
/
JPA調用:
/**
* 復制HRM組織
*
* @param orgId
* @param prefixStr
* @param hrmType
*/
public void copyFromHrm(Integer orgId,Integer bonusOrgId,Integer hrmType) {
Query query = entityManager.createNativeQuery("{call copy_BonusDept_From_HRM(?,?,?)}");
query.setParameter(1, orgId);
query.setParameter(2, bonusOrgId);
query.setParameter(3, hrmType);
query.executeUpdate();
}
復制完刷新組織樹的時候需要refresh一下:
/**
* 刷新bonusOrganization
*
* @param bonusOrganization
*/
public void refeshBonusOrganization(BonusOrganization bonusOrganization) {
bonusOrganization.getBonusDepartments().clear();
entityManager.refresh(bonusOrganization);
}
分享到:
相关推荐
Spring Data JPA 提供了调用存储过程的能力,使得在Java应用中使用存储过程变得方便。 1. **存储过程** 存储过程是数据库中预编译的SQL语句集合,可以接受参数并返回结果。在本例中,我们有 `test_pkg` 包下的两个...
通过EJB3和JPA调用存储过程,可以使用`EntityManager`的`createStoredProcedureQuery()`方法,并设置参数,然后调用`execute()`执行。 总结,EJB3和JPA提供了灵活的数据库访问方式,包括使用原生SQL和调用存储过程...
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于...文档"EJB调用存储过程_1.doc"和"EJB调用存储过程_2.doc"可能包含更具体的示例代码和实际应用案例,阅读这些文档将进一步加深你对这一主题的认识。
调用存储过程的方法主要依赖于EntityManager对象的createNativeQuery()方法,该方法用于执行非JPA(Java Persistence API)的SQL语句。调用存储过程的SQL格式通常如下: ```sql {call 存储过程名称(参数 1, 参数 2,...
Java中调用SQL Server存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库逻辑,提高性能并降低网络流量。本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种...
我们可以使用存储过程或者在Java代码中处理。例如,可以使用`findAllByOrderByParentIdAsc()`获取所有节点,然后在内存中遍历和构造树形结构。 最后,业务逻辑中调用`NodeRepository`的方法来操作树形结构。例如,...
10. **存储过程**:JPA 2.0允许调用数据库的存储过程,并将其结果映射到Java对象。 **源代码与JavaDoc** 源代码可以帮助开发者理解JPA 2.0内部的工作机制,对于学习和调试非常有价值。JavaDoc则提供了详细的API...
Spring Data JPA 也支持调用数据库存储过程,通过 `@Procedure` 注解进行声明。 3.5. **事务性** JPA 存储库的方法默认是事务性的,可以根据需要配置事务边界。 3.6. **锁定** 支持乐观锁和悲观锁机制,以处理并发...
7. **存储过程**:Spring Data JPA也支持调用数据库存储过程,并将其结果转换为Java对象。 8. **JPA实体**:学习如何定义实体类,使用`@Entity`, `@Table`, `@Id`, `@GeneratedValue`等注解,以及如何处理关系(如`...
4. 使用`@Procedure`和`@Function`注解来调用数据库中的存储过程和函数。 通过上面的介绍,我们了解到SpringDataJPA不但提高了代码的复用性,还降低了ORM框架切换的成本。如果项目需要更换底层的数据持久化框架,只...
最后,Spring Data JPA也支持存储过程的调用,只需要在Repository接口上定义一个方法,并使用`@Procedure`注解。 通过阅读《Spring Data JPA从入门到精通》和《Spring Data JPA中文文档[1.4.3]》,读者将能全面了解...
总结,JPA批注参考涵盖了从基础的实体定义、主键策略、属性映射到复杂的关联关系、查询语言、存储过程调用、事务处理等多个方面,是Java开发中进行数据库操作的重要工具。通过合理运用批注,开发者能够高效地实现ORM...
- **Repository自定义操作**: 扩展JPA的默认行为,实现复杂查询或存储过程调用。 - **数据分页与排序**: 使用`Pageable`接口实现分页查询和排序。 - **异常处理**: 如`PersistenceException`, `...
在上面的例子中,我们成功地使用JPA调用了mysql函数将对象存储到数据库中。但是,如果我们想批量保存呢?如何使用@Query注解来实现批量保存? 一种可能的解决方案是使用@Query注解来定义一个批量保存方法: ```...
8. **存储过程的支持**:JPA2提供了调用存储过程的能力,扩展了JPA的功能范围。 9. **动态实体**:通过`EntityManager`的`createDynamicEntity`方法,可以创建临时的、运行时定义的实体,适用于动态数据模型的情况...
在描述的场景中,JPA连接数据库的过程是在`persistence.xml`配置文件中进行的。这个文件是JPA的配置中心,它定义了持久化单元(Persistence Unit),也就是数据库连接的相关信息。在这个例子中,配置文件内容如下: ...
- 可以调用数据库的存储过程,通过`StoredProcedure`注解和`NamedStoredProcedureQuery`配置。 10. **性能优化** - 使用JPA的缓存机制,如一级缓存(Entity Manager级别的缓存)和二级缓存(可选,如Hibernate的...
- 检查复杂查询,如JOINs、子查询,以及自定义SQL或存储过程的调用。 4. **性能测试** - 测试批量操作,如批处理插入和更新,评估JPA的性能。 - 分析延迟,测量从发出请求到接收响应的时间,找出可能的瓶颈。 -...
在本项目中,Spring Boot被用作构建微服务的基础,每个服务可能包含特定的业务逻辑和数据存储。 **5. 实现细节** 在项目"BackendSystem-master-27261c9e2639b52a0e1369ce48ead0c69cc8a047"中,我们可以看到以下几个...
Spring Boot简化了配置过程,使得MyBatis的集成变得非常容易。你需要在`pom.xml`文件中添加MyBatis和相关的依赖项,如MyBatis-Spring-Boot-Starter。接下来,在`application.yml`或`application.properties`中配置...