当前位置: 首页 > 知识库问答 >
问题:

Oracle.jdbc.OracleDatabaseException:ORA-00972:标识符太长

何和惬
2023-03-14
@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;


}
List<Projects> findProjectsByProjectsIdAndProjectDetailsLanguageId(int projectId, int languageId)
oracle.jdbc.OracleDatabaseException: ORA-00972: identifier is too long
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

我读过关于隐性策略的书,但不确定。你知道怎么解决这个问题吗?

共有1个答案

壤驷泓
2023-03-14

Oracle DB12.2文档中的2.8.1数据库对象命名规则:

>

  • 标识符名称的最大长度取决于兼容初始化参数的值。

    >

  • 如果COMPATIBLE值设置为12.2或更高,则名称长度必须为1到128字节,但以下情况除外:

    >

  • 数据库名称限制为8个字节。

    磁盘组、可插入数据库、回滚段、表空间和表空间集的名称限制在30字节以内。

    对于这个版本,标识符太长了。唯一的方法是使用较短的名称或将兼容降级到较低的版本。

  •  类似资料:
    • 问题内容: 我陷入了这个问题。数据库架构是由其他人提供的,因此我不能简单地更改名称。我尝试在各处添加适当的注释,也许我遗漏了一些(显而易见的)? 这是我的完整映射(很多类),我将省略getter / setter。 问题是当hibernate试图获得全部 控制规则 ControlRuleAttrib ControleRuleAttribPK 这里的问题是,是否有可能以某种方式得到实体的?如您所见,

    • 问题内容: 我陷入了这个问题。数据库架构是由其他人提供的,因此我不能简单地更改名称。我尝试在各处添加适当的注释,也许我遗漏了一些(显而易见的)? 这是我的完整映射(很多类),我将省略getter / setter。 问题是当冬眠试图获得全部 控制规则 ControlRuleAttrib ControleRuleAttribPK 这里的问题是,是否有可能以某种方式得到实体的?如您所见,以下是的ID

    • 问题内容: 我将数据库转移到MS SQL Server 2008 R2,当我尝试保存长字符串时,它给了我最大长度错误,而我将它替换后将该列的数据类型设置为“文本”与“ varchar(max)”,但那里没有解决方案。 请为我提供一个解决此问题的解决方案。我正在执行以下查询: 我进行了很多搜索,但是找到的解决方案对我没有用。 谢谢! 问题答案: 根据ANSI SQL标准,对象标识符(例如,而不是字符

    • 标识符 Go 的源文件以 .go 为后缀名存储在计算机中,这些文件名均由小写字母、数字、大写字母组成,例如 hello.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 pro_03.go 。文件名不包含空格或其他特殊字符。 一个源文件可以包含任意多行的代码,Go 本身没有对源文件的大小进行限制。 Go 语言也是区分大小写的,这与 C 家族中的其它语言相同。有效的标识符必须以

    • The blank identifier 空白标识符 We’ve mentioned the blank identifier a couple of times now, in the context of for range loops and maps. The blank identifier can be assigned or declared with any value of an

    • 我曾经处理过存储在Azure Key Vault中的秘密,但这是第一次使用证书进行身份验证,而不是使用秘密。 我有一个存在Azure密钥库里的证书。我想使用此证书与Azure AD应用程序进行身份验证。 我知道,对于存储在Azure密钥库中的秘密,我们可以使用@microsoft.keyvault(secreturi='secret identifier')通过应用程序设置在Azure函数中引用它