Spring Cloud Build (transacción)

Hoy hablamos sobre cómo iniciar un negocio.

Antes, configuramos el inicio de la transacción en JpaConfiguration.

Ver: https://blog.csdn.net/hanjun0612/article/details/105239557

 

Si la transacción no se inicia, se informará un error: ejecutar una consulta de actualización / eliminación

 

Uno, asuntos de Dao

Existe este párrafo, que representa el comienzo de los asuntos de Dao.

@EnableTransactionManagement (mode = AdviceMode.ASPECTJ)
Entonces, si es el método de Dao,

Solo necesitamos agregar: @Transactional y @Modifying

@Repository
 public  interface AccountDao extiende JpaRepository <Account, Integer> { 
    @Transactional 
    @Modifying 
    @Query (value = "update test_account set balance = balance-: balance where name =: name", nativeQuery = true )
     void update (@Param (value = "nombre") Nombre de cadena, @ Param (valor = "balance" ) Doble balance); 
}

 

Segundo, transacción de servicio

Si usted es una transacción de servicio, debe agregar @EnableTransactionManagement en el inicio de la aplicación

@SpringBootApplication (scanBasePackages = {"com.test" }) 
@EnableEurekaClient 
@EnableTransactionManagement 
public  class Service1Application { 
 
    public  static  void main (String [] args) { 
        SpringApplication.run (Service1Application. Class , args); 
    } 
 
}

 

Llamada de servicio

paquete com.test.service; 
 
import com.test.dao.AccountDao;
import com.test.model.Account;
import org.hibernate.SQLQuery;
importar org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
importar org.springframework.transaction.annotation.Transactional; 
 
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.Transient;
importar java.util.HashMap;
import java.util.List;
import java.util.Map; 
 
/ ** 
 * @author Tyler 
 * @date 2020/3/31 
 * / 
 
@Service ( "accountService" )
 clase pública  AccountServiceImpl implementa 
    AccountService { @PersistenceContext 
    EntityManager em; 
    @Transactional pública vacío Update (entidad Cuenta) lanza la excepción { 
        cadena SQL = "equilibrio conjunto actualización test_account = saldo +: equilibrio donde nombre =: nombre" ; 
        Map <String, Object> params = new
 
 
     
 HashMap <Cadena, Objeto> (); 
        params.put ( "balance" , entity.getBalance ()); 
        params.put ( "nombre" , entity.getName ()); 
 
        Consulta query = em.createNativeQuery (sql);
        para (Map.Entry <String, Object> entrada: params.entrySet ()) { 
            query.setParameter (entry.getKey (), entry.getValue ()); 
        } 
                query.unwrap (SQLQuery. class ) .setResultTransformer (Transformers.ALIAS_TO_ENTITY_MAP); 
        query.executeUpdate (); 
        // lanzar una nueva excepción ("hola"); 
    } 
 
}

 

Depende de usted, dónde controla la transacción, donde sea que comience.

Supongo que te gusta

Origin www.cnblogs.com/hanjun0612/p/12692923.html
Recomendado
Clasificación