问题描述
这是我的实体类
@Entity公共类项目详细信息{@ID私人 int projectId;私人字符串项目描述;私有 int 语言 ID;}@实体公共类项目{@ID私人 int projectId;私人字符串项目名称;私人本地日期项目开始日期;私人本地日期项目结束日期;私人字符串项目状态;@OneToOne私人项目详细信息项目详细信息;}
我有一个这样的 JPA 方法
ListfindProjectsByProjectsIdAndProjectDetailsLanguageId(int projectId, int languageId)
执行时出现以下错误.
oracle.jdbc.OracleDatabaseException: ORA-00972: 标识符太长
已添加Physical-statergy命名配置
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
我读过隐式策略,但不确定.知道如何解决这个问题吗?
来自 2.8.1 数据库对象命名规则取自 Oracle DB 12.2 文档:
标识符名称的最大长度取决于 COMPATIBLE 初始化参数的值.
如果 COMPATIBLE 设置为 12.2 或更高的值,则名称长度必须为 1 到 128 个字节,以下情况除外:
数据库名称限制为 8 个字节.
磁盘组、可插拔数据库 (PDB)、回滚段、表空间和表空间集的名称限制为 30 个字节.
对于这个版本,标识符太长了.唯一的方法是使用较短的名称或将 COMPATIBLE
降级到较低版本.
Here is my Entity class
@Entity
public class ProjectDetails {
@Id
private int projectId;
private String projectDescription;
private int languageId;
}
@Entity
public class Project {
@Id
private int projectId;
private String projectName;
private LocalDate projectStartDate;
private LocalDate projectEndDate;
private String projectStatus;
@OneToOne
private ProjectDetails projectDetails;
}
I have a JPA method like this
List<Projects> findProjectsByProjectsIdAndProjectDetailsLanguageId(int projectId, int languageId)
While executing I am getting below error.
oracle.jdbc.OracleDatabaseException: ORA-00972: identifier is too long
Already added Physical-statergy naming configuration
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
I read about implicit-strategy but not sure about it. Any idea how to solve the issue?
From the 2.8.1 Database Object Naming Rules taken from the Oracle DB 12.2 documentation:
For this version, the identifier is simply too long. The only way to go is to either use a shorter name or downgrade COMPATIBLE
to a lower version.
这篇关于oracle.jdbc.OracleDatabaseException: ORA-00972: 标识符太长的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!