gpt4 book ai didi

hibernate - @Procedure 注解孤立数据库连接(spring-data-jpa)

转载 作者:行者123 更新时间:2023-12-01 13:56:52 25 4
gpt4 key购买 nike

我们在生产中有一个批处理作业,它调用一个存储过程来更新一些表。此存储过程不返回任何内容。现在,我们正在用完数据库连接,因为每次运行作业时都会有 1 个连接成为孤立的。存储库使用带有过程注释的 Spring Data CrudRepository。

我们是否遗漏了有关调用和 Spring 数据 jpa 的某些内容?提前致谢!

@Repository
public interface CertificationRepository extends CrudRepository<Certification, Integer> {
@Procedure("usp_batch_update_certifications")
void updateCertifications(Date previousFireTime);
}

最佳答案

您使用的是哪个 Spring-Data-JPA 版本和哪个 PersistenceProvider?您能否指出一个重现该问题的简化示例应用程序?

正如评论中所说,我可以重现您的问题。过程执行需要一个不存在的 TX,或者周围的 TX 从未提交。

您可以尝试使用 @Transactional

添加过程方法

角色实体:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedStoredProcedureQueries;
import javax.persistence.NamedStoredProcedureQuery;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureParameter;

/**
* Oracle PL/SQL
*
* <pre>
* CREATE or replace PROCEDURE update_roles (pattern_i IN varchar) AS
* BEGIN
* DBMS_OUTPUT.put_line('update_roles Received pattern: ' || pattern_i);
* END;
* /
*
* <pre>
*/
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(name = "Role.updateRoles"
, procedureName = "update_roles"
, parameters = {
@StoredProcedureParameter(name = "pattern"
, mode = ParameterMode.IN
, type = String.class) })
})
@Entity
public class Role {

@Id @GeneratedValue//
private Long id;

private String name;
...

角色存储库:

import java.io.Serializable;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.query.Procedure;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;

interface RoleRepository extends CrudRepository<Role, Serializable> {

@Procedure
@Transactional
void updateRoles(@Param("pattern") String pattern);
}

关于hibernate - @Procedure 注解孤立数据库连接(spring-data-jpa),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com