从 Spring Boot 3.0 迁移到 3.2 导致将对象插入 Oracle 数据库时出现问题

问题描述 投票:0回答:1

最近,我们从 Spring Boot 3.0 迁移到 3.2,并且失去了将对象插入 Oracle 数据库的能力。以下是争论的对象:

@Entity
@Table(schema="S1", name="T1")
public class UserLog {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY )
    @Column(name="USER_CHNG_LOG_KEY")
    private Integer changeLog;

    // other attributes
   // where we are trying to save in the implementation. 
   changeLogRepo.save(userLog); // userLog is properly populated,
                                // the id value is not populated 
                                // since we are using IDENTITY 

使用 Spring Boot 3.0 时,我们在属性文件中使用它:

spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect

但是在 Spring Boot 3.2 中,他们已经为 OracleDialect 摆脱了这一点。

以下是我们遇到的问题:

  1. 在 Spring Boot 3.0 中,当我们在 yml 文件中使用 spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect 时,我们能够保存

  2. 在Spring Boot 3.2中,我们使用 spring.jpa.database-platform=org.hibernate.dialect.OracleDialect 但它不起作用,我们收到以下消息:

    2024-08-08 03:13:35.206 [http-nio-8080-exec-2] 警告
    o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver.logException(247) - 已解决
    [java.lang.NullPointerException:无法分配字段“columnName”,因为“”为空]

我们尝试了以下方法:

  1. 指定
    spring.jpa.database-platform=org.hibernate.dialect.OracleDialect
    在我们的配置文件中,并且不起作用
  2. 删除生成的值并专门设置 id 值,它可以工作,但不想这样做。

我们如何消除错误并像 3.2 之前那样保存对象?

oracle spring-boot hibernate spring-data-jpa hibernate-mapping
1个回答
0
投票

我可以让 IDENTITY 工作的唯一方法是将其更改为以下内容

  @GenericGenerator(name="increment", strategy = "increment", parameters = {
                          @Parameter(name = "schema", value = "MEDM_MSTR")})    
  @Column(name="USER_CHNG_LOG_KEY")

还有其他人遇到过这个问题吗?这有记录在某处吗?

© www.soinside.com 2019 - 2024. All rights reserved.