最近,我们从 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 摆脱了这一点。
以下是我们遇到的问题:
在 Spring Boot 3.0 中,当我们在 yml 文件中使用 spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect 时,我们能够保存
在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”,因为“”为空]
我们尝试了以下方法:
spring.jpa.database-platform=org.hibernate.dialect.OracleDialect
在我们的配置文件中,并且不起作用我们如何消除错误并像 3.2 之前那样保存对象?
我可以让 IDENTITY 工作的唯一方法是将其更改为以下内容
@GenericGenerator(name="increment", strategy = "increment", parameters = {
@Parameter(name = "schema", value = "MEDM_MSTR")})
@Column(name="USER_CHNG_LOG_KEY")
还有其他人遇到过这个问题吗?这有记录在某处吗?