标签: spring-data

@事务回滚在 Spring Boot 应用程序中不起作用?

我有一个要求,我需要将一些员工数据插入 db2 数据库,下面是代码:

@Log4j2
@Service
@Transactional
public class EmployeeServiceImpl extends EmployeeService{

@Autowired
private EmployeeDataRepository employeeDataRepository;

@Override
@Transactional(rollbackOn = {DataAccessException.class})
public void insertEmployeeData(List<Employee> employeeList){
 try{
     employeeDataRepository.insertEmployeeData(employeeList);
    }catch(DataAccessException ex){
      log.error("Exception whie inserting data in db {}",ex.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)
@Log4j2
@Repository
public class EmployeeDataRepositoryImpl implements EmployeeDataRepository{

@Autowired
private DataSource dataSource;

@Value("${db.schema}")
private String schema;

@Override
public void insertEmployeeData(List<Employee> employeeList){
   this.jdbcInsert = new SimpleJdbcInsert(dataSource).withTableName("Employee");
   for(Employee emp : employeeList){
    Map<String,Object> parameters = new HashMap<String,Object>();
      parameters.put("name", emp.name);
      parameters.put("age", emp.age);
      parameters.put("dateOfJoining", emp.dateOfJoining);
      parameters.put("address", emp.address);
      parameters.put("salary", emp.salary);
      jdbcInsert.execute(parameters); …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data spring-data-jpa spring-boot

0
推荐指数
1
解决办法
3209
查看次数

当 autocommit=true 时无法调用提交

您好,我正在使用 jhipster 生成的代码,其依赖项为 3.0.7。我正在尝试使用下面的代码对数据库密码进行自定义加密和解密。我调试时解密成功,但是在本机服务器会话中,我可以看到自动提交设置为 true,这是错误的原因。默认自动提交粘贴了下面的错误。看起来 hikari 自动提交没有设置或者什么的。这个和mysql没有关系。com.mysql.cj.protocol.a 中有一个名为 NativeServerSession 的类,它将自动提交设置为 true,从而导致错误。我尝试在 yml 文件中将自动提交设置为 true 。但我得到了同样的错误。请帮忙。如果我删除加密并删除数据库配置类,它就会起作用,并且 NativeServerSession 自动提交也设置为 true。

@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
@EnableJpaRepositories("com.my.repository")
@EnableTransactionManagement
@EnableJpaAuditing
public class DatabaseConfiguration extends DriverManagerDataSource implements InitializingBean  {

    @Override
    public void afterPropertiesSet() throws Exception {
        this.decryptPass();
        
    }
    
    @Bean
    public void decryptPass() {
        String retrievedPassword = this.getPassword();
        ..decrpt code goes here
        this.setPassword(decryptedDBPassword);          
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序.yml

datasource:
    #driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    default-auto-commit: false
    auto-commit: false
    url: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&relaxAutoCommit=true
    username: dbusername
    password: encryptedpassword
    hikari:
      poolName: Hikari
      auto-commit: false
      default-auto-commit: …
Run Code Online (Sandbox Code Playgroud)

mysql spring-data mssql-jdbc spring-data-jpa jhipster

0
推荐指数
1
解决办法
3292
查看次数

Spring JPA 中的 LIKE COALESCE 不起作用

所以我的问题如下:

我有一个表想要应用过滤器。该过滤器应调用一个查询,该查询根据给定的信息查找报告。

这就是我的查询的样子:

   @Query("SELECT r FROM Report r WHERE r.importanceLevel = COALESCE(importance,'%')" +
        "AND r.source = COALESCE(source,'%')" +
        "AND r.resolvedStatus = COALESCE(resolvedStatus,'%')" +
        "AND r.header LIKE + '%' COALESCE(query,'%') + '%'")
  List<Report> getReportsByAppliedFilter(@Param("importance") int importance, @Param("source") String source,
                                       @Param("resolvedStatus") int resolvedStatus, @Param("query") String query);
Run Code Online (Sandbox Code Playgroud)

问题是:IntelliJ 不喜欢以下内容:

 LIKE + '%' COALESCE(query,'%') + '%'
Run Code Online (Sandbox Code Playgroud)

错误:预期,得到+

您知道如何解决这个问题吗?

java spring jpa spring-data spring-data-jpa

-1
推荐指数
1
解决办法
8827
查看次数

将 spring boot 与 amazon lambda 一起使用是正确的吗?

我想要一个解决方案,允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库。但在网上我读到 lambda 函数应该非常简单。也许 Spring Cloud 是解决方案?

问候

spring-data spring-boot spring-cloud aws-lambda

-1
推荐指数
1
解决办法
3509
查看次数

Spring JPA不在

我有两个类DrugmedicalDrawer.

我搜索了一种方法来获取所有medicalDrawer未使用的内容Drug

@Entity
public class Drug {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long drugId;

    @OneToOne
    private MedicalDrawer medicalDrawer;
}

@Entity
public class MedicalDrawer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long medicalDrawerId;

    private String name;
}
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa

-2
推荐指数
1
解决办法
6553
查看次数